2進位制原碼反碼補碼,2進位制加減乘除原理
阿新 • • 發佈:2019-01-28
二進位制用補碼做加減法
- 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