電腦基礎(1)-原碼、反碼、補碼

來源:互聯網
上載者:User

標籤:

一、概念理解 1.機器數

一個數在電腦中的二進位表上形式,叫做這個數的機器數;

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

00000011和10000011就是機器數;

2.真值

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

00000011的真值是+1;

10000011的真值是-1;

3.原碼

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

[+1]=[0000 0001]原;

[ -1]=[1000 0001]原;

4.反碼

正數的反碼是其本身;

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

[+1]=[0000 0001]原 = [0000 0001]反;

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

5.補碼

正數的補碼是其本身;

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

[+1]=[0000 0001]原 = [0000 0001]反 = [0000 0001]補;

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

二、為什麼使用原碼、反碼、補碼

1.因為電腦只知道加法、對於減法就是加上一個負數;

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

3.使用原碼做運算

1-1=1+(-1)=[0000 0001]原 + [1000 0001]原 = [1000 0010]原 = – 2

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

4.使用反碼做運算

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

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

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

5.使用補碼做運算

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]

電腦基礎(1)-原碼、反碼、補碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.