欧美经典成人在观看线视频_嫩草成人影院_国产在线精品一区二区中文_国产欧美日韩综合二区三区

反碼補碼計算器(計算機原碼反碼和補碼看了這一篇)

反碼補碼計算器(計算機原碼反碼和補碼看了這一篇)

俞修文 2025-04-11 科技 22 次瀏覽 0個評論

最近看了一些文章說原碼、反碼、補碼。還有一些軟考的那些講師講解。直接說這樣背就沒有問題了。完全沒有解析背后的原理。下面就是軟考的其中一頁PPT。寫得是沒錯,但是這樣背,很快就忘記了,我想從另外一個方向和你說。為什么會出現原碼、反碼和補碼?他們解決了什么東西。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

其實出現這些都是為了方便表示一個負數,而且在實現數的運算的時間更簡單。現在計算機表示一個數都是用補碼,它解決了+0,-0的問題。

下面用4個比特位來表示數

原碼表示:最高位(MSB most significant bit)代表符號位,0為正,1為符。你會發現會有-0(0000),+0(1000),和我們平時生活當中只有一個-0和+0是一樣的相違背。然后對一個數進行加法。按我們正常的去做加法,你會發現會結果是錯的。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

原碼表示

明明+1 +(-1)=0,但是你看下面對應的碼表是-2.如果想糾正這種結果也可以通常復雜的邏輯組件實現。看結果是不是有點反人性。所以計算機放棄使用這種表示一個數。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

以原碼方式進行加法

反碼表示:這個你是需要記的,反碼是將正數取反(也就是翻轉它所有位,在硬件層面就是進行NOT運算)。直接上圖。你會發現仍然存在一個+0(0000),-0(1111)的問題。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

反碼表示

做加法是怎么操作的呢,使用循環進位這種方法,如果加法在最高位有溢出,就從最低位加1.如果不理解你再多看一次加粗的話還有再看一次圖。如果沒有溢出就不用管,但是這樣還是比較麻煩,因為要多做一步加1的操作(我看《計算機系統解密》這書上說這樣操作加法麻煩,但是我覺得采取補碼的表示方法你本來也就要采取碼加1的做法,不也是多做了一步加1的操作嗎,怎么就說有更簡單的方法呢)。但是采取補碼運算時方便了。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

反碼加法

補碼表示:對正數取反,也就是對每一位進行NOT運算,然后加1,如果出現進位溢出,那就丟棄。 你看0就是(0000),如果你按補碼的規則,0000取反就是 1111再加1就是[1]0000,其中1是溢出,那就丟棄,那還是0000,所以完美地0只有一種表示方法。而且原碼,反碼都出現了兩個0,補碼只有一個0,所以補碼能表示更多數,多在能比補碼反碼多表示一個負數。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

補碼表示

書中插圖那里我認為不對,-1應該是1111的表示。它想尋找一個-1的表示方法。就是什么數加1會等于0。0的表示方法和1的表示方法已經規定了好了。所以在尋找一個-1的表示方法,然后就得出了補碼的規則。所以你知道為什么會出現這些不同碼的表示方法了吧。就是為了尋找一個高效的方法(排隊奇異,使運算簡單)來表示一個負數。

計算機:原碼、反碼和補碼。看了這一篇,你不會后悔

補碼加法

現在你已經了對原碼,反碼,補碼清楚了吧。當你遺忘,你想想怎么表示一個負數,能夠不出現+0,-0的現象。計算是使用補碼來表示的負數的。最后來做幾道題來結束吧。

(1)十進制數-48用補碼表示為( )

A、10110000 B、11010000 C、11110000 D、11001111

(2)已知X、Y為兩個有符號數的定點整數,它們的補碼為:[x]補=00010011B,[y]補=11111001B,則[X+Y]補= B

將你的答案寫在評論區。

轉載請注明來自夕逆IT,本文標題:《反碼補碼計算器(計算機原碼反碼和補碼看了這一篇)》

每一天,每一秒,你所做的決定都會改變你的人生!

發表評論

快捷回復:

評論列表 (暫無評論,22人圍觀)參與討論

還沒有評論,來說兩句吧...