計算機基礎 1 原碼 反碼 補碼

2022-05-10 20:14:10 字數 2359 閱讀 3990

乙個數在計算機中的二進位製表上形式,叫做這個數的機器數;

機器數是帶符號的,最高位存放符號(0正,1負);

00000011和10000011就是機器數;

將帶符號的機器數對應的真正值稱為機器數的真值;

00000011的真值是+1;

10000011的真值是-1;

原碼就是符號位加上真值的絕對值;

[+1]=[0000 0001]原;

[ -1]=[1000 0001]原;

正數的反碼是其本身;

負數的反碼是在其原碼的基礎上,符號位不變,其餘各個位取反;

[+1]=[0000 0001]原

= [0000 0001]反;

[- 1]=[1000 0001]原 = [1111 1110]反;

正數的補碼是其本身;

負數的補碼是在反碼的基礎上+1;

[+1]=[0000 0001]原

= [0000 0001]反 = [0000 0001]補;

[- 1]=[1000 0001]原 = [1111 1110]反 = [1111 1111]補;

1.因為計算機只知道加法、對於減法就是加上乙個負數;

2.為了是計算機運算設計更加簡單,也將符號位參與運算;

1-1=1+(-1)=[0000 0001]原

+ [1000 0001]原 = [1000 0010]原 = – 2

得出結論:使用原碼計算減法,讓符號位參與計算,結果是不正確的

1-1=1+(-1)=[0000 0001]反 +[1111 1110]反 =[1111 1111]反 = [1000 0000]原 = –0

得出結論:使用反碼計算減法,解決了真值部分的不正確問題,唯一問題是「0」這個特殊值上,0帶符號是沒有意義的

[0000 0000]反 = [1000 0000]反 = 0,且0的反碼有兩種表示形式

1-1=1+(-1)=[0000 0001]補+[1111 1111]補= [0000 0000]補=[0000 0000]原

= 0 這樣用0用[0000 0000]表示,而用[1000 0000]表示-128

(-1)+(-127)=[1000 0001]原+[1111 1111]原=[1111 1111]補+[1000 0001]補=[1000 0000]補

實際上是使用以前的-0的補碼來表示-128,所以-128並沒有原碼和反碼

得出結論:使用補碼計算,不僅修復了0的符號存在兩個編碼問題,而且還能多表示乙個最低數

原碼:第一位是符號位,所有8位二進位制的取值範圍是:

[1111 1111,0111 1111] 即 [-127,127]

反碼:反碼是通過原碼得到的,所以範圍和原碼一樣,也是[-127,127]

補碼:補碼比反碼多了乙個最低數,即範圍是[-128,127]

場景一:

鐘錶當前時間是6點,怎麼把時間設定成4點:

方式一:往回調2個小時:6-4= 2

方式二:往前撥10個小時(6+10)mod 12 = 4

方式三:往前撥22個小時(6+22)mod 12 = 4

兩個整數a,b,若它們除以整數m所得的餘數相等,則稱a,b對於模m同餘,

記作 a ≡ b (mod m),讀作 a與b關於模m 同餘

場景二:

4   mod 12 = 4,即4   ≡ 4(mod 12)

16 mod 12 = 4,即16 ≡ 4(mod 12)

28 mod 12 = 4,即28 ≡ 4(mod 12)

則4,16,28關於模12同餘

x mod y = x-y[x/y]

x mod y 等於 x 減去 y乘上x與y的商的下界

場景三:

(-2) mod 12 = –2 + 12*(-1) = 10,即(-2) ≡ 10(mod 12)

(-4) mod 12 = –4 + 12*(-1) = 8  ,即(-4) ≡ 8 (mod 12)

(-5) mod 12 = –5 + 12*(-1) = 7  ,即(-5) ≡ 7 (mod 12)

現在我們為乙個負數找到了它 正數同餘數

2-1=2+(-1)=[0000 0010]原+[1000 0001]原=[0000 0010]反+[1111 1110]反

-1的反碼表示是1111 1110,如果[1111 1110]認為是原碼,則[1111 1110]原 = -126,它的真值為126。而(-1) ≡ 126(mod 127)

得出結論:乙個數的反碼,實際上是這個值對於乙個模的同餘數,二這個模是二進位製所能表示的最大值

計算機基礎 原碼 補碼 反碼

最近工作中用到了,補碼的概念,發現這些概念腦子裡全糊了 翻出書簡單複習一下,歸納如下 首先我們討論的都是有符號數,第一位都是符號位 正0 負1 原碼 最簡單明瞭 x 1101 x原碼 0,1101 x 1101 x原碼 1,1101 這裡注意下原碼0有兩種表示法 0原碼 0,0 0原碼 1,0 補碼...

計算機 原碼 反碼 補碼

在計算機中,用補碼來表示數字,因為 1 這樣可以比較方便的表示0 保證0作為正數或者負數補碼都是00000000 2 計算時用補碼直接加減就是最終數值 符號位參與運算 1.原碼 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 ...

計算機原碼, 反碼, 補碼

乙個數在計算機中的二進位制表示形式,叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號,正數為0,負數為1.因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 3 而不是形式值131 10000011轉換...