一.原碼與補碼
在計算機系統中,數值一律用補碼來存儲(表示)。主要原因:使用補碼,可以將符號位和其他位統一處理;同時減法也可按加法來處理。另外,兩個補碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄。
1.原碼轉補碼分兩種情況
(1)正數的補碼:與原碼相同(已知原碼求補碼)
例如:+9的原碼是0000 1001。補碼也是0000 1001。
(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 等整型類型,不能應用於浮點數操作