Hello,大家好,我是程序媛小敏,持续为您分享<em>python</em>知识。前面,我们一起学习了<em>python</em>中四种位运算符(&、|、^、~)的用法,本篇我们一起学习剩余的两种移位运算符(左移位<<、右移位>>)。移位运算是一种二进制的
2021-05-23 19:00:28
Hello,大家好,我是程式媛小敏,持續為您分享python知識。
前面,我們一起學習了python中四種位運算符(&、|、^、~)的用法,本篇我們一起學習剩餘的兩種移位運算符(左移位<<、右移位>>)。
01移位運算的本質
移位運算是一種二進位制的運算符。它是把一個二進位制數,符號位不變,其餘位進行向左或向右移動,左側空的數位就補符號位的數,右側空的數位就補0,溢位的數位就捨棄。
前面我們學習過,對於一個數,是由不同數位構成了,每個數位對應著一個權重。相鄰數位的權重比在二進位制中就是2,在十進位制中就是10(其他進制中也是類似)。
十進位制數個位權重為1,十位為10,而二進位制正數的末位權重為1,從右往左,權重每次提高為2倍。
那麼,對一個數左移位運算,就相當於把數字從較低權重的數位,移動到了較高權重的數位,移動幾步,就放大了幾個2倍(即2的幾次冪)。
右移位,就相當於把數字從較高權重的數位,移動到較低權重的數位,移動幾步就縮小了幾個2倍。
注意:移位運算時,符號位不變,空的數位補0,溢位數位捨棄。
02左移位運算符用法
前面我們學習了,在計算機中的二進位制數的計算均是使用補碼參與運算的,移位運算也不例外。
這裡我分別舉兩個正數和負數的例子加以說明(為了方便計算,本篇採用8位機器數演示):
定義兩個變數 a = 7,b = -8,用二進位制原碼、反碼和補碼分別表示如下:a的原碼:0000 0111 ,a的反碼:0000 0111 ,a的補碼0000 0111b的原碼:1000 1000 ,b的反碼:1111 0111 ,b的補碼1111 1000
下面對a和b分別進行左移位運算(以移動2位為例)。
a << 2,將0000 0111按照左移位的原理,得到結果是0001 1100,這個結果是正數,即轉原碼還是它,轉成十進位制為:28,即7 <<2 = 28。b << 2,同理,得到結果是1110 0000,先轉反碼得1001 1111,再加1得補碼為1010 0000,轉成十進位制為:-32,即-8 <<2 = -32。
從結果來看,7左移兩位,相當於7*2的2次冪。
注意:正數的原碼、反碼和補碼相等
這裡,如果對二進位制的補碼求法,以及十進位制和二進位制轉換有疑問的友友可以看下面文章:
理解了地球是圓的,你就可以理解二進位制減法轉化為加法的奧妙
一文讀懂十進位制和二進位制的轉化
03右移位運算符的用法
這裡繼續使用上面的a、b,以右移位2位為例講解:
a >> 2,同理,按照右移位的原理,得到結果是0000 0001,這是個正數,即轉原碼還是它,轉為十進位制為:1,即 7 >> 2 = 1。b >> 2,同理,得到結果是1111 1110,先轉反碼得1000 0001,再加1得補碼為1000 0010,轉成十進位制為:-2,即-8 >> 2 = -2。
注意:右移位時,符號位不參與移動,左側空的數位,用符號位的數補充。
好了,關於python位運算符的學習到本篇就結束了,各位友友學會了麼?歡迎大家在評論區留言討論交流。我是程式媛小敏,持續為您分享python知識乾貨。
相關文章
Hello,大家好,我是程序媛小敏,持续为您分享<em>python</em>知识。前面,我们一起学习了<em>python</em>中四种位运算符(&、|、^、~)的用法,本篇我们一起学习剩余的两种移位运算符(左移位<<、右移位>>)。移位运算是一种二进制的
2021-05-23 19:00:28
电源使用了LLC+DC-DC方案,转换率方面高达92.89%。从电源侧面可以稍微看到电源内部情况,二级EMI电路部分的用料很扎实,电感、电容之类的都很饱满。其次独立开关也是高端电源的标配了。<em>Intel</em> CPU和主板搭配推荐:i9
2021-05-23 18:30:54
民警在周先生的手机<em>浏览器</em> 发现了许多 假冒“公检法”主页链接 并且已完成注册 眼看周先生可能被骗 民警立即对周先生 进行了详细宣传 只要你不小心点了链接 就可能会被套路 防范电信网络诈骗意识绝不可松懈
2021-05-23 18:30:45
小编在浏览的时候,差一点就信以为真了。还好多年的互联网经验直觉告诉我,有点不对。 结果真猜对了,因为是<em>浏览器</em>打开的页面,我们可查看其网站的域名有没有异常。在上图中中,域名非哔哩哔哩的域名,而是拼音字
2021-05-23 18:30:37
不过很多人觉得苹果公司最近几年在<em>iPhone</em>上的创新力度不够,存在外观设计啃老、充电功率一直没有提升等问题,但这些并没有影响到果粉们对<em>苹果手机</em>的热爱。 首先,苹果在最近这两年里将<em>iPhone</em
2021-05-23 18:30:23
相信有一直关注机sir至今的果粉们应该都有所了解了,对于大多数用户来说,苹果<em>iPhone</em>依旧是首选机型之一,因为影响力实在是太强大了,很难有手机厂商能够与其进行抗衡。 而目前最热门的智能手机非苹果的<em>iPh
2021-05-23 18:30:10