有符號右移>>,無符號右移>>>
計算機表示數字正負不是用+ -加減號來表示,而是用最高位數字來表示,0表示正,1表示負
1.有符號右移>>(若正數,高位補0,負數,高位補1)
正數:例如4>>2
首先寫出4的二進位制數,因為是正數所以最高位為0,也就是第一個
0000 0000 0000 0000 0000 0000 0000 0100
右移兩位得到(高位補0)
000000 0000 0000 0000 0000 0000 0000 01
結果為:1,右移n位也就是4/(2^n)
負數:例如-4>>2(高位補1)
首先寫出-4的二進位制數,因為是負數所以最高位為1
1000 0000 0000 0000 0000 0000 0000 0100
然後寫出-4補碼:保證符號位不變,其餘位置取反加1(從右往左遇到第一個1,然後剩下的全部取反就是了)
1111 1111 1111 1111 1111 1111 1111 1100(補碼)
右移2位: 在高位補1
1111 1111 1111 1111 1111 1111 1111 1111
根據補碼寫出原碼才是我們所求的結果, 保留符號位,然後按位取反再加上1
100000 0000 0000 0000 0000 0000 0000 00(取反後的結果)
100000 0000 0000 0000 0000 0000 0000 01(再加1)
結果為:-1
2:無符號右移>>>(不論正負,高位均補0)
正數:例如4>>>2
與4>>2的運算相同,結果也為1
負數:例如-4>>>2
首先寫出-4的二進位制數,因為是負數所以最高位為1
1000 0000 0000 0000 0000 0000 0000 0100
然後寫出-4補碼:保證符號位不變,其餘位置取反加1(從右往左遇到第一個1,然後剩下的全部取反就是了)
1111 1111 1111 1111 1111 1111 1111 1100(補碼)
右移2位: 在高位補0
0011 1111 1111 1111 1111 1111 1111 1111
結果為:1073741823
---------------------
作者:Bush羅
來源:CSDN
原文:https://blog.csdn.net/bushqiang/article/details/79394211
版權宣告:本文為博主原創文章,轉載請附上博文連結!