補碼表示法(0, 128詳解)

2021-06-17 18:25:09 字數 982 閱讀 9035

關於計算機內部定點整數表示方法,有很多種文章都有總結,但是仍然不能很好地解決初學者的困惑,為此在這裡用圖表說明一下

1、這裡以8個二進位制位為例,實際上計算機內部有16位(2位元組)、32位(4位元組)等資料型別。

2、還有定點整數在計算機中都是以補碼形式表示的(正整數原碼、反碼和補碼相等,負整數用補碼表示),這裡為        了說明原碼、補碼、反碼的相互之間的關係而假設計算機內部採用了原碼、反碼表示,實際上這是不存在的。

下面我們來看一下**吧:

1、這裡我們先不管資料的實際大小,反正在這八個二進位制位都是寫進去0或1,於是這八個二進位制位共有2^8=256個         排列組合,所以最多能表示256個資料,至於怎麼表示,這就是補碼、反碼、原碼研究的問題了,注意**中的二       進製數是按順序從00000000到11111111漸變的這就涵蓋了所有的256中組合,下面讓我們具體分析下:

2、當二進位制數的d7位為0時,把這些資料還原成十進位制會發現,無論把這些二進位制資料看成補碼、原碼或反碼結果都       是一樣的,這正是因為正整數的原碼、補碼和反碼相同的體現,大家還發現了乙個問題,為什麼**的b、c列表       示0時用+0,呢?先放下這個問題,我們向下看。

3、當漸變到10000000時我們發現資料發生了突變而且**後面三列的資料也不相同了,這是因為高位是1無論在原         碼、反碼還是補碼中都表示負數,而負數的原碼、反碼、補碼是各不相同的。

4、繼續向下看資料都是漸變的了不同的是a列是從-128  ~  -1,b列從-0  ~  -127,c列是從-127  ~  -0,從中我們不難         發現a列即補碼表示的範圍中沒有+0,-0之說,而原碼、反碼中則區分開了-0和+0,顯然浪費掉乙個儲存資料的情       況,a列儲存的資料是-128  ~  127共256個,b、

c列儲存的-127  ~  127外加乙個重複的情況共256個

為什麼要用補碼表示

用補碼的主要原因 使用補碼,可以將符號位和其它位統一處理 同時,減法也可按加法來處理。另外,兩個用補碼表示的數相加時,如果最高位 符號位 有進製,則進製被捨棄。n位計算機,設n 8,所能表示的最大數是11111111,若再加1稱為100000000 9位 但因只有8位,最高位1自然丟失。又回了000...

補碼原理 負數為什麼要用補碼表示

我們都知道負數在計算機中是以補碼 忘了補碼定義的戳這裡 表示的,那為什麼呢?本文嘗試了解補碼的原理,而要想理解它,首先得理解算術中 模 的概念。所以首先看一下什麼是模,然後通過乙個小例子來理解補碼。1.1 什麼是模數 in mathematics,modular arithmetic is a sy...

補碼原理 負數為什麼要用補碼表示

我們都知道負數在計算機中是以補碼 忘了補碼定義的戳這裡 表示的,那為什麼呢?本文嘗試了解補碼的原理,而要想理解它,首先得理解算術中 模 的概念。所以首先看一下什麼是模,然後通過乙個小例子來理解補碼。1.1 什麼是模數in mathematics,modular arithmetic is a sys...