二進位制補碼主要是為了解決負整數的加減法運算(減法轉化為加法)。
原碼表示法就是用二進位制的最高位表示符號,0表示正數,1表示負數。以8位為例:1就是表示為0000 0001,-1表示為1000 0001.
而補碼的規則是正整數保持不變,針對負整數,除符號位外,其他位全部取反,然後+1。
注:負整數中,原碼轉補碼是符號位不變,按位取反+1.補碼轉原碼也一樣,符號位不變,按位取反+1.
比如-1,取反結果為1111 1110(符號位不變),再+1,補碼為1111 1111.
特殊之處的說明:
1.原碼表示中,0和-0可以分別表示為0000 0000和1000 0000,同乙個數有兩種表示,不方便計算機處理。而轉換為補碼之後卻是一樣的,0的補碼為0000 0000不變,-0:1000 0000反碼為1111 1111,+1得補碼0000 0000.因此不用特殊處理。
2.除符號位外,7位二進位制數能表示的範圍是0~127,127的原碼和補碼都是0111 1111,正數符號位為0,所以8為二進位制能表示的最大的正數就只能到127了。那負數的情況呢,這裡有乙個特殊的規定,就是在補碼中用1000 0000表示-128。所以8位二進位制數的範圍為-128到127.
減法轉換為加法:
例:5-3轉為5+(-3)
0000 0101
1111 1101
1 0000 0010
捨去最高位得0000 0010 也就是2.
例:-5-2 轉為-5 + (-2)
1111 1011
1111 1110
1 1111 1001
捨去最高位的1111 1001
取反1000 0110 +1得到1000 0111 也就是-7
二進位制補碼
二進位制補碼 計算機儲存資料都是以0,1二進位制進行儲存。對於有符號整數儲存 對於浮點數待續 引入補碼概念。原碼即直接將真值轉換為其相應的二進位制形式,而反碼和補碼是對原碼進行某種轉換編碼方式。對於正整數,原碼,反碼和補碼都相一樣 對於負整數,補碼等於反碼加1,而反碼等於原碼除符號位不變其他位按位求...
二進位制補碼
計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制,正如 亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘自 數學發展史 有空大家可以看看哦...
二進位制補碼
在計算機系統中,數值一律用二進位制補碼進行表示,補碼的計算規則是 補碼 等於 原碼按位 取反 再 加 1。有符號型別的數值,最高位是符號位,1為負數,0為正數。按照補碼計算規則,可得 正數的補碼等於其原碼。如 char num num 1 如 1 的原碼是 0000 0001 補碼也是 0000 0...