負數在計算機中如何存儲


符號位

在8位機中,規定每個字節的最高位為符號位。那么,+8就是00001000,而-8則是10001000。

但是,隨便找一本《計算機原理》,都會告訴你,實際上,計算機內部采用2的補碼(Two's Complement)表示負數。

計算機處理加法運算邏輯

  1. 正數的原碼,反碼,補碼都相同,負數的原碼,反碼,補碼都不同。

  2. [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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM