計算機系統存儲有符號整數

一、爲何負數老是比正數多存儲一位,eg: 32 位的有符號整數,則其數值範圍爲 [−2^31,  2^31 − 1]?spa

用一種不專業,但好理解的方式就是就是0,正0=》00,負0=》10。可是沒有必要用2中表示0因此get

10000000 =》-128it

專業的話,先說計算機系統是用補碼錶示,而後用補碼的優勢(3個),若是用twos complement(二位補碼法,經過一個公式計算出來)表示的話10 就是表示-2class

原則:硬件

 一、0表示正,1表示負數;二進制

 二、計算機爲方便減法計算,在表示負數的時候引入補碼機制,將減法變成加法統一運算。那如何運算,負數整數部分取反獲得反碼,反碼+1的到補碼。計算機

 在計算機系統中,數值一概用補碼進行表示和存儲。緣由在於使用補碼能夠將符號和數值統一處理,同時加法和減法也能夠統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不須要額外的硬件電路。di

補碼:正整數的補碼是其二進制表示,與原碼相同;負整數的補碼,將其原碼除符號位外的全部位取反(0變1,1變0,符號位爲1不變)後加1生活

反碼:正數的反碼與其原碼相同;負數的反碼是對正數逐位取反,符號位保持爲1;co

 現實生活的例子,10點加8點=》6點; 10點減去4點=》6點;也就是說 10-4的運算能夠轉化成10+8;4和8互爲補數。對於計算機而言,8位二進制系統的模爲2^8。在這樣的系統中減法問題也能夠化成加法問題,只需把減數用相應的補數表示就能夠了。把補數用到計算機對數的處理上,就是補碼。

用補碼錶示的3個優勢:

統一加減法,統一正負數,補碼和原碼轉換方式同樣無需額外的硬件電路

二、無符號n比特正數表示的範圍是多少

[0,  2^n-1]

相關文章
相關標籤/搜索