C 原碼反碼補碼最簡潔使用總結

2021-10-06 22:38:06 字數 887 閱讀 1247

一、有符號數和無符號數

無符號數: 範圍( 0 ~ 15 ) 0000 = 0 ,1111 = 15。[總共16個數 ]

有符號數: 範圍( -7~+7) 1111 = -7 ,1000 = -0,0000 = +0 ,0111 = +7;

[四位有符號數同樣表示16個數,其中正負0表示兩個數]

二、原碼表示 (能滿足同正號的數和無符號數相加,異號相加出錯)

表示方法: 一中四位 8 4 2 1 和 ± ( 4 2 1)即為原碼表示方法。

計 算: 0100(-4)+ 0100(-4) = 1000(-0) -8負向溢位一位即為 -0。

三、反碼表示(解決異號相加問題,但是同負號相加錯誤)

表示方法:正數時反碼即為原碼,負數時符號位不變,其餘按位取反,如  2的原碼為0010,反碼仍

為0010 ; -5的原碼為 1101 反碼為 1010 。

計 算: 1010(-5)+0010(2) = 1100 (反碼取反為1011 ,即為-3)。

四、補碼表示(解決所有計算問題)

表示方法:正數補碼等於其本身;負數的反碼兩種方法【1、符號數和最後乙個1以及1右邊所有的0保持不變,其餘按位取反】 【2、反碼+1】,如 2的原碼為0010,反碼仍為0010 ; -5 原碼為1101, 補碼為1011。

計 算:1011(-5)+0010(2) = 1101 (原碼表示為1011 ,即為-3)。

補碼注意:補碼1000為 -8,因為符號位溢位被捨棄。本來補碼表示為11000。所以其範圍為[-8 ~ +7],不存在正負0的問題,仍表示16個不同的數。

原碼 補碼 反碼總結

前一段時間在做模型外殼提取程式時候,用到了補碼的知識,現在系統的總結下原碼 補碼 反碼的知識。你可能注意到了我寫的順序是補碼在反碼前面,是的,補碼不是必須依賴於反碼才能得知的,但本文為了方便講解和容易理解仍然採用了先反碼再補碼的順序。本文以1個位元組的儲存空間為例進行講解。原碼比較簡單,最高位為符號...

原碼 反碼 補碼的總結

原碼 反碼 補碼 數值在計算機中表示形式為機器數 計算機只能識別0和 1,使用的是二進位制 而在日常生活中人們使用的是十進位制 正如亞里斯多德早就指出的那樣 今天十進位制的廣泛採用 只不過我們絕大多數人生來具有 10個手指頭這個解剖學事實的結果 儘管在歷史上手指計數 5,10進製 的實踐要比二或三進...

C語言原碼 反碼 補碼

原碼 反碼 補碼 計算機的基本儲存單元是位元組 byte 計算的的最小儲存單元是位 bit c語言當中的數被分為有符號數和無符號數 有符號數是 正數 負數 0 無符號數是 0 不帶符號的正數 對於無符號數和有符號數的0和正數,原碼 反碼 補碼一致 對於有符號數,最高位為符號位,0代表 1代表 對於有...