左移和右移N位等同于無溢出檢查的2的N次冪運算:2**N
<<左移
運算規(guī)則:
按二進制形式把所有的數(shù)字向左移動對應(yīng)的位數(shù),高位移出(舍棄),低位的空位補零。
語法格式:
需要移位的數(shù)字<<移位的位數(shù)
例如:3<<2則是將數(shù)字3左移動2位
計算過程:
3<<2首先把3轉(zhuǎn)換為二進制數(shù)字00000000000000000000000000000011
然后把該數(shù)字高位(左側(cè))的兩個零移出,其他的數(shù)字都朝左平移2位,最后在低位(右側(cè))
的連個空位補零。則得到的結(jié)果是00000000000000000000000000001100,
則轉(zhuǎn)換為十進制是12
數(shù)學(xué)意義:
在數(shù)學(xué)沒有溢出的前提下,對于正數(shù)和負(fù)數(shù),左移以為都相當(dāng)于乘以2的1次方,左移n位,就相當(dāng)于乘以2的n次方。
>>右移
運算規(guī)則:
按二進制形式把所有的數(shù)字向右移動對應(yīng)的位數(shù),低位移出(舍棄),高位的空位補符號位
即正數(shù)補0,負(fù)數(shù)補1
語法規(guī)則:
需要移位的數(shù)字>>移位的次數(shù)
例如:11>>2則是將數(shù)字11右移2位
計算過程:
11的二進制形式為:00000000000000000000000000001011然后把低位的最
后兩個數(shù)字移出,因為該數(shù)字是正數(shù),所以在高位補0,則得到的最終的二進制結(jié)果為:
00000000000000000000000000000010轉(zhuǎn)換為十進制數(shù)為3
數(shù)學(xué)意義:
右移一位相當(dāng)于除以2,右移n位相當(dāng)于除以2的n次方,這里取的是商,不要余數(shù)。