轉(zhuǎn)《python 位操作符 左移和右移 運算》

左移和右移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ù)。

轉(zhuǎn)自https://blog.51cto.com/wangyan112/1320143。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容