在計算機系統中,數值一概用補碼來存儲(表示)。主要緣由:使用補碼,能夠將符號位和其餘位統一處理;同時減法也可按加法來處理。另外,兩個補碼錶示的數相加時,若是最高位(符號位)有進位,則進位被捨棄。spa
1.原碼轉補碼分兩種狀況
(1)正數的補碼:與原碼相同(已知原碼求補碼)
例如:+9的原碼是0000 1001。補碼也是0000 1001。class
(2)負數的補碼:符號位爲1,其他位爲該數絕對值的原碼按位取反,而後整個數加1。
例如:-7原碼爲1000 0111(高位爲符號位,1表示負數,0表示正數),補碼爲1111 1001.效率
2.補碼轉原碼也分兩種狀況(已知補碼求原碼)
(1)正數的原碼:與補碼相同
例如:+9的補碼是0000 1001。原碼也是0000 1001。計算機
(2)負數的原碼:符號位爲1,其他位爲該該補碼按位取反,而後整個數加1。
例如:-7的補碼是1111 1001,原碼是1000 0111。移動
左移 (<<) 浮點數
將第一個操做數向左移動第二個操做數指定的位數,空出的位置補0。
左移至關於乘. 左移一位至關於乘2;左移兩位至關於乘4;左移三位至關於乘8。位運算
x<<1等於 x*2
x<<2等於x*4 運算符
同理, 右移即相反:系統
右移 (>>)
將第一個操做數向右移動第二個操做數所指定的位數,空出的位置補0。
右移至關於整除. 右移一位至關於除以2;右移兩位至關於除以4;右移三位至關於除以8。
x>>1等於 x/2
x>>2等於 x/4
由於位移比乘除速度快.對效率要求高,並且知足2的冪次方的乘除運方,能夠採用位移的方式進行
位運算只能用於byte short char int long 等整型類型,不能應用於浮點數操做