二進位制原碼和補碼

2021-09-01 22:25:13 字數 1052 閱讀 1909

當原碼為正數的時候,正數的原碼反碼補碼都相同,即00011的反碼也為00011,補碼也為00011.

當原碼為負數的時候

,反碼即按位取反

,補碼為反碼加一,

10011可表示-3,那麼符號位不變,其餘位按位取反即反碼11100.補碼便是11101.

現代計算機多數以二進位制補碼的形式來存放整數。簡單的說,乙個二進位制數的每一位對應了乙個權值,從最低為到最高位,權值依次是1、2、4、8、16……以此類推。其中,最高位若為1,表示負數,該為的權值是負數,如果為0,這個數表示正數。整個二進位制數的對應十進位制值就是把各個位的權值乘以對應位上的數然後求和。就按樓主的3位二進位制數舉例:

可以表示的範圍應該是[-4, 3]。111並不是最小的負數,按照剛才說的權值來算,111代表的十進位制數是:-4+2+1=-1,即最高位的權值是負的。所以最小的負數應該是100,即-4+0+0=-4.一共的能表示的範圍是100、101、110、111、000、001、010、011,分別對應了-4、-3、-2、-1、0、1、2、3。

補碼為10000000的原碼是什麼?

[10000000]補 =[10000000]反+1 =11111111+1

=(1)00000000 =00000000(最高位溢位了,符號位變成了0)

你可能會問 :10000000這個補碼表示的哪個數的補碼呢?

其實這是乙個規定,這個數表示的是

-128

其實就是將

-0強表示為-128

用補碼能夠表示的範圍為-128~127,0~127分別用00000000~01111111來表示,而-127~-1則用10000001~11111111來表示,多出的10000000則用來表示-128。因此對於任何乙個n位的二進位制,假若表示帶符號的整數,其表示範圍為-2^(n-1)~2^(n-1)-1,且有max+1=min

char

ch=127;

ch++;

ch的值是多少?它的值是-128,讀者可以上機驗證一下。

二進位制的原碼補碼和反碼

資料在計算機是以二進位制的形式來儲存的,按照資料的補碼來儲存的。正數的原碼 反碼 補碼都是相同的。負數的補碼就是它的相反數的原碼的各個位取反後,再 1得到的。0的原碼,補碼都為0。1個位元組可以表示2的8次方 256個數,按照正負數劃分就把它表示成範圍 128 127。二進位制的八位數裡邊用最高位表...

二進位制原碼 反碼 補碼詳解

原碼 原碼是指將最高位作為符號位 0表示正,1表示負 其它數字位代表數值本身的絕對值的數字表示方式。例如 數字6 在計算機中原碼表示為 0 000 0110 其中,第乙個數字0是符號位,0表示正數,0 000110是數字6的二進位制資料表示。數字 6 在計算機中原碼表示為 1 000 0110 以上...

二進位制 真值 原碼 反碼 補碼

機器數 乙個數在計算機中二進位制的表示形式叫機器數,機器數是帶符號的 計算機使用最高位來表示符號位 負數為1 正數為0.假如計算機的字長為8位 那麼對於十進位制3的機器數表示為0000 0011 而對於 3的機器數表示為1000 0011。真值 由於機器數是帶符號的所以機器數的形式值就不等於實際的值...