1. 程式人生 > >2進位制原碼反碼補碼,2進位制加減乘除原理

2進位制原碼反碼補碼,2進位制加減乘除原理

二進位制用補碼做加減法

  • 1.最高位為符號位,0正1負;加減法都使用補碼形式的加法;正數補碼為原碼本身;負數補碼為其反碼+1;運算結果位數溢位的部分捨棄
8+2=10
    00001000(8補碼)
   +00000010(2補碼)
--------------------------------
    00001010(結果為補碼)
    00001010(符號位為0表正數,正數補碼就是原碼)=10
8-2=8+(-2)=6
    00001000(8補碼)
   +11111110(-2補碼)(2原碼為00000010,反碼11111101)
--------------------------------
   100000110(結果為補碼)
    00000110(第一位溢位捨棄)
00000110(原碼)=6

二進位制用補碼做乘除法

  • 1.乘法左移,相當於<<;除法右移,相當於<<
帶符號位移case:
-7>>1 = -4
  第一步:00000000 00000000 00000000 00000111(7的原碼)
  第二步:11111111 11111111 11111111 11111001(-7的補碼,第一步求反+1)
  第三步:11111111 11111111 11111111 11111100(帶符號位移)
  第四步:00000000 00000000 00000000 00000100(-1 取反 )
  第五步:10000000 00000000 00000000 00000100(符號位補1)答案是-4

無符號位移case:
-1>>>4 = ox0FFFFFFF
  第一步:00000000 00000000 00000000 00000001(1的原碼)   第二步:11111111 11111111 11111111 11111111(-1的補碼,第一步求反+1)   第三步:00001111 11111111 11111111 11111111(無符號位移)答案是ox0FFFFFFF