符號位
在8位機中,規定每個字節的最高位為符號位。那么,+8就是00001000,而-8則是10001000。
但是,隨便找一本《計算機原理》,都會告訴你,實際上,計算機內部采用2的補碼(Two's Complement)表示負數。
計算機處理加法運算邏輯
-
正數的原碼,反碼,補碼都相同,負數的原碼,反碼,補碼都不同。
-
[x]補碼+[y]補碼=[x+y]補碼,如果結果是正數,正數補碼等於原碼,如果是負數再轉化成原碼([x]原碼=[[x]補]補)
什么是補碼,及計算方法
第一步,符號位不變,其余每一個二進制位都取相反值,0變成1,1變成0。比如,(-8)10001000的相反值就是11110111。
第二步,將上一步得到的值加1。11110111就變成11111000。
也就是說,-8在計算機(8位機)中就是用11111000表示。
為什么要引入補碼
00010000(16)
+11111000(-8)補碼
---------
100001000(8)補碼=(8)原碼
可以看到,按照正常的加法規則,得到的結果是10001000。注意,這是一個9位的二進制數。我們已經假定這是一台8位機,因此最高的第9位是一個溢出位,會被自動舍去。
00001000(8)補碼
+11110000(-16)補碼
---------
11111000(-8)補碼-->((-8)補)補=(10001000)-8(符號位不變,其余為取反+1)
