原碼補碼概念知識補全

2021-08-26 04:40:42 字數 1033 閱讀 1473

因為計算機內表示數值使用的是補碼,而不是原碼,所以你才有這樣的疑問。下面我簡單解釋一下你就明白了。 

原碼就是這個數本身的二進位制形式。 以8位二進位制為例 

0000001 就是+1 

1000001 就是-1 

補碼分為兩種情況:1、正數的補碼與原碼一樣;2、負數的補碼是符號位保持不變,其餘各位取反,再加1。 

反碼就是負數符號位不變,其餘各位取反,正數反碼與原碼相同。 

以四位二進位制為例,其原碼、反碼、補碼為: 

真值 原碼 反碼 補碼 

7 0111 0111 0111 

6 0110 0110 0110 

5 0101 0101 0101 

4 0100 0100 0100 

3 0011 0011 0011 

2 0010 0010 0010 

1 0001 0001 0001 

0 0000 0000 0000 

-0 1000 1111 0000 

-1 1001 1110 1111 

-2 1010 1101 1110 

-3 1011 1100 1101 

-4 1100 1011 1100 

-5 1101 1010 1011 

-6 1110 1001 1010 

-7 1111 1000 1001 

為什麼要設立補碼呢? 

第一是為了能讓計算機執行減法:[a-b]補=a補+(-b)補 

第二個原因是為了統一正0和負0 

正零:00000000 

負零:10000000 

這兩個數其實都是0,但他們的原碼卻有不同的表示。 

但是他們的補碼是一樣的,都是00000000 

16位二進位制原碼表示的負數是 -0~-32767,包括-0加起來是32768個數;因為補碼加了1,所以補碼的表示範圍是 -1~-32768,也是32768個數。 

n位補碼能表示的範圍的公式是 

-2^(n-1)到2^(n-1)-1 

比n位原碼能表示的數多乙個 

原碼反碼補碼的概念

比如求 43 首先先把43轉為二進位制 因為乙個位元組是8位 最高位是符號位 轉二進位制就是 101011因為乙個位元組八個位所以前面補為0 0 0101011 上面的最左邊的0是最高符號位,也就表示的是 號 43的原碼 0 0101011 反碼分兩類 正數的反碼和原碼補碼是一樣的,補碼正數的反碼和...

原碼 反碼 補碼知識詳細講解

本篇文章講解了計算機的原碼,反碼和補碼.並且進行了深入探求了為何要使用反碼和補碼,以及更進一步的論證了為何可以用反碼,補碼的加法計算原碼的減法.論證部分如有不對的地方請各位牛人幫忙指正 希望本文對大家學習計算機基礎有所幫助 一.機器數和真值 在學習原碼,反碼和補碼之前,需要先了解機器數和真值的概念....

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...