二進位制補碼

2022-08-10 15:18:21 字數 846 閱讀 1879

在計算機系統中,數值一律用二進位制補碼進行表示,補碼的計算規則是:

補碼 等於 原碼按位 取反 再 加 1。

有符號型別的數值,最高位是符號位,1為負數,0為正數。

按照補碼計算規則,可得 正數的補碼等於其原碼。

如:char num;

num = 1;

如 +1 的原碼是 0000 0001 ,補碼也是 0000 0001;

而 - 1 的補碼是 1111 1111。

以下以8位有符號型別的數值來認識一下補碼:

可以看到,當用8位來儲存資料時,資料的大小範圍是 -128到127。

可以發現,+127加1後,如果是無符號的,表示的是128,但如果是有符號的,則剛好是-128的補碼,再加1,是-127的補碼。

而,-1加+1後,又變為0,回到了**的起點。

0 1 2 3 …… 126 127  -128 -127 -126 -2 -1 0 

可以發現,8位能表示的最大的值加1後 變成8位能表示的最小的值,形成首尾相接的乙個環。

有乙個辦法可以快速的算出負數的補碼:

-1的補碼:0xff(255) = 256 - 1

-2的補碼:0xfe(254) = 256 - 2

-127的補碼:0x81(129) = 256 - 127

-128的補碼:0x80(128) = 256 - 128

可以發現,負數的補碼 = 256 - |負數自身|,當然這只是8位時的情況。

如果是 n 位的:

負數的補碼 = 2^n -  |負數自身|

二進位制補碼

二進位制補碼 計算機儲存資料都是以0,1二進位制進行儲存。對於有符號整數儲存 對於浮點數待續 引入補碼概念。原碼即直接將真值轉換為其相應的二進位制形式,而反碼和補碼是對原碼進行某種轉換編碼方式。對於正整數,原碼,反碼和補碼都相一樣 對於負整數,補碼等於反碼加1,而反碼等於原碼除符號位不變其他位按位求...

二進位制補碼

計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制,正如 亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘自 數學發展史 有空大家可以看看哦...

二進位制補碼

二進位制補碼主要是為了解決負整數的加減法運算 減法轉化為加法 原碼表示法就是用二進位制的最高位表示符號,0表示正數,1表示負數。以8位為例 1就是表示為0000 0001,1表示為1000 0001.而補碼的規則是正整數保持不變,針對負整數,除符號位外,其他位全部取反,然後 1。注 負整數中,原碼轉...