左移右移運算符 & ~取反運算符


1、左移右移運算符:

二進制運算的運算符號。
"<<“和”>>"
"<<"左移:其實就是x2的移動位數的次冪
">>"右移:就是除以2的移動位數的次冪。
“>>”和“>>>”
“>>”:最高位補什么,有原有數據的最高位值而定。
如果最高位是0(代表是正數),右移后,用0補空位。
如果最高位是1(代表是負數),右移后,用1補空位。

可能你對負數右移之后用1補空位的結果為什么會等於負數除於2,我們來舉個例子:

負數:-4

原碼:1000 0100(最高位代表符號位,我們簡單的用8位來模擬)

反碼:1111 1011(反碼除了符號位不取反,其他都取反)

補碼:1111 1100 (補碼=反碼+1)

-4右移一位之后

補碼:1111 1110

反碼:1111 1101(反碼=補碼-1)

原碼:1000 0010(結果就是-2)

注意:正數的原碼、反碼、補碼都一樣


“>>>”:無論最高位是什么,右移后,都用0補。

 

2、~取反運算符

按位取反:二進制每一位取反,0變1,1變0。

~9的計算步驟:
轉為原碼:0 1001
計算補碼:0 1001
按位取反:1 0110

1 0110轉為原碼(注意現在它是一個負數了):

反碼:1 0101

原碼:1 1010
符號位為1是負數,即-10

 

~-9的計算步驟:
轉二進制:1 1001
計算補碼:1 0111
按位取反:0 1000

0 1000轉為原碼:

反碼:0 1000

原碼:0 1000(也就是8)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM