電腦0和1

來源:互聯網
上載者:User

0和1表示兩種狀態,現實中好實現,比如用1、電路關、閉     2、電位高、低     來實現。

 

原碼、反碼、補碼。

反碼:正數的反碼與原碼相同;負數的反碼:符號位為1,其餘各位對原碼依次取反。注意+0的反碼:0000 0000B;-0的反碼:1111 1111B

補碼:正數的補碼與原碼相同;負數的補碼:反碼 + 1        0的補碼只有0000 0000B

 

電腦為何用補碼儲存數值?

加法比減法容易實現(進位比借位容易),所以電腦統一用加不用減。

樣本:計算8 - 3

1、若用原碼:        0000 1000B + 1000 0011B =    1000 1011B即-11

2、若用反碼:        0000 1000B + 1111 1100B = 1 0000  0100B 去除溢出的一位後:0000 0100B 即4    比實際值小1    於是將反碼+1後即為正確結果,稱其為補碼。

 

另外java中數值最高位為符號位,兩數值相加,若最高位有進位,則捨棄。(超出表示範圍)

 

常見疑惑:

1、為什麼-1在電腦中用1111 1111B表示?

-1的原碼:1000 0001B

-1的反碼:1111 1110B

-1的補碼:1111 1111B

 

2、為什麼byte類型的-127用1000 0001B表示而-128用1000 0000B表示?

-127的原碼:1111 1111B

-127的反碼:1000 0000B

-127的補碼:1000 0000B

 

-128+127=-1

-128+0111 1111B = 1111 1111B(全為補碼形式)

由上推出。128的補碼(即在電腦中的表示形式)為:1000 0000B

 

注意:計算時不要亂,不能用原碼和補碼進行運算。

同種表示方式之間可以運算。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.