日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【计算机原理篇】原码、反码和补码

發(fā)布時(shí)間:2025/3/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【计算机原理篇】原码、反码和补码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注意:計(jì)算機(jī)實(shí)際上是按照補(bǔ)碼進(jìn)行存儲(chǔ)的,對(duì)計(jì)算機(jī)來說沒有原碼和反碼這種東西,原碼和反碼只是為了我們方便計(jì)算補(bǔ)碼而定義的一種概念。

一、原碼

正數(shù)的原碼就是它本身,負(fù)數(shù)的原碼最高位為1。

如果用一個(gè)字節(jié)來存儲(chǔ)整數(shù),那么20的原碼就是0001 0100,-20的原碼就是1001 0100

二、反碼

正數(shù)的反碼跟原碼一樣,負(fù)數(shù)的反碼按位取反,符號(hào)位不變。

如果用一個(gè)字節(jié)來存儲(chǔ)整數(shù),那么20的反碼就是0001 0100,-20的反碼就是1110 1011

三、補(bǔ)碼

正數(shù)的補(bǔ)碼跟原碼一樣,負(fù)數(shù)的補(bǔ)碼是反碼加1。

如果用一個(gè)字節(jié)來存儲(chǔ)整數(shù),那么20的補(bǔ)碼就是0001 0100,-20的補(bǔ)碼就是1110 1100

四、計(jì)算機(jī)為什么不用原碼和反碼,用的補(bǔ)碼

原因是使用原碼或者反碼計(jì)算結(jié)果是錯(cuò)誤的,補(bǔ)碼才是正確的。

下面我們來看一下20+(-20),三種情況下計(jì)算的結(jié)果

1、原碼計(jì)算

? ?0001 0100(20)

+?1001 0100(-20)

-------------------------------

? ? 10101000(-40)

20和-20的和是-40,結(jié)果顯然不對(duì)

2、反碼計(jì)算

? ?0001 0100(20)

+?1111 0101(-10)

--------------------------------

? ? 0000?1001(9)

20和-10的和是9,結(jié)果顯然不對(duì)

3、補(bǔ)碼計(jì)算

? ?0001 0100(20)

+?1110 1100(-20)

-------------------------------

? ? 0000 0000(0)

用反碼計(jì)算的結(jié)果正確

五、為什么一個(gè)字節(jié)能表示的整數(shù)范圍是-128到-127

首先最高位為0,其他位為1,就代表最大的整數(shù),就是0111 1111(127),那么最小的數(shù)應(yīng)該是1000 0001(-127)

那么問題來了,一個(gè)字節(jié)如何表示-128?

我們結(jié)合上面的原碼、反碼和補(bǔ)碼知識(shí)知道,我們知道1000 0000(-0)+0111 1111(+127)=1111 1111(-1)。這種情況下我們發(fā)現(xiàn)補(bǔ)碼的計(jì)算也不準(zhǔn)了,-0與127的和居然是-1。剛剛不是還說用補(bǔ)碼計(jì)算時(shí)正確的嗎?

為了解決這種特殊情況,我們認(rèn)為反碼1000 0000表示的是-128,不再表示-0(-0本身也沒有意義,用0就可以了),然后1000 0000(-128)+0111 1111(+127)=1111 1111(-1),漂亮,所有情況下,補(bǔ)碼的計(jì)算都是正確的了。

?

總結(jié)

以上是生活随笔為你收集整理的【计算机原理篇】原码、反码和补码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。