數值的表示方法 原碼 反碼和補碼

2025-04-30 08:30:09 字數 3562 閱讀 2558

1樓:匿名使用者

原碼、反碼和補碼是幾乎所有計算機教材的第一課,很基礎也很簡單,由於這些內容一直跟。

二、四、十六進位的轉化放在一起,我從來都是跳過這陪輪章直接往下看的,直到有一天,我自己被乙個超白目的問題難倒了……」將-3右移2(bit)位,結果是多少?」一下子,我發現蘆隱信,在過去的學習中我挑食了,現在補上這一課。原碼,是自然數值的機器數表示。

原碼的數值表示範圍跟二進位的位數有關,如8位二進位數最大的表示範圍是-127~+127之間(最高位是符號位)。反碼,是機器數運算過程的中間表示形式。具體規則是:

正數的反碼和原碼相同;負數的反碼是符號位不變,其他位按位求反得到的。如,-3的補碼是11111100。補碼,是機器數的運算表示形式。

引入了補碼克服了原碼的侷限性(由於符號位要單獨操作,運算方法比較複雜),使得計算減法可以用計算加法的方式得到;補碼另外的優點是,數字0補碼錶示的唯一性。具體的規則是:正數的補碼和原碼相同;負數的補碼是反碼末位加1。

如,-3的補碼是11111101。然後,運算攜念器對數值進行右移操作,負數補1,正數補0,得到11111111。從符號位看,代表的是負數,還原成原碼方法是求補碼的補碼,得到原碼10000001,代表十進位數-1。

總結一下:正數的原碼,反碼和補碼相同。負數的反碼是原碼保持符號位不變,其他位按位求反;補碼是反碼加1。

補碼還原是補碼的補碼。左移操作即所有的高位捨去(包括符號位),右邊(低位)補0;右移操作,所有的低位捨去(右移),高位(左邊)負數補1,正數補0。

2樓:匿名使用者

這個我前幾天給乙個人解釋過~我把的複製過來~ 計算機不會減法~補碼的作用是把減法變成加法~書上一般是總結的規律方便記憶~ 但是你實際從低層原理上看~並不是很準確~比如 補碼是沒正負號的~以下是我在其他地方的~ 計算機不會減法`所以用補碼把減法變畢鬥成加法` 你看的數一般就說 "正數的補碼是其本身,負數的補碼是原碼按位取反後1,符號位就是最高位等等`"但是確沒說為什麼 正書可以127`負數居然可以存128位其實是不準確`或者說有的地方是不對的從底層手消磨看`只是為了方便你記憶總結的規律~我們還是來看8位~ 首先~我得說補碼無正負號~這是官方解釋~ 8位二進位一共可以表示多少位數字?255個加個0~~ 其次~補碼橋咐其實是 跟最小數的 "距離"~為什麼這麼說是最小數的距離`解釋很麻煩`不過有個最簡單的方法是窮舉`(我們先看後7位~第一位我稍後解釋為什麼不是正負號)-128 是多少 0000000-127 0000001-128 0000002………1 11111110 00000001 0000001………127 1111111 從這裡我們可以看出~7位反碼是跟最小數 -128的距離~ 但我們又發現個問題~ -1到0的時候進位了`但是我們只有7位` 進的那一位沒有` 這就是為什麼要8位的原因~但現在又出現個問題` 為什麼 沒進位的第一位是1~進位以後第一位是0~也就是說~ -1為什麼不是01111111 而是11111111?我們還是舉例來說明`- 1+-2為多少~至少顯然是個負數~ 而如果-1表示為 01111111`那-1+-2`會為11111101~ 負數加負數居然等於整數!

顯然不行`所以 -1也11111111表示~ 也就是說` -128不是從00000000開始` 而是從10000000開始(注意開始窮舉是7位`這裡是八位)~ 所以我們看出~第一位主要是為了進位也有區別正負數的作用~但是其實不是正負號~其實這些舉例都可以換成數學方式說明~不過估計說起更復雜~舉例說明簡單些~ 希望對你有幫助。

真值與碼值有何區別?原碼、反碼、補碼三者之間如何換算?

3樓:沙裡波特

帶符號的數字,可變成各種**(八位的),見圖:

但是,在計算機中,原碼和反碼都是不存在的。

因此,就不必關心它們了。

只有補碼,才是實用的編碼。

其變換規律,你看看圖,就可以自己摸索出來。

4樓:全正肖安雙

如果原碼00000

反碼就是11111

補碼是反碼(正數)

反碼+1(負數)

真值是乙個變數本身所具有的真實值。

碼值就是個表。

原碼、反碼和補碼的轉換及表示範圍

5樓:長青數碼

數字在機器中儲存都是用二進位來儲存的,有符號數則有:原碼、反碼和補碼三種表示方式。這三種表示方式裡,最高位均代表符號位,1-負數,0-正數。

1.原碼。乙個數的原碼就是該數直接轉換成二進位得到的數字,第一位是符號位。

2.反碼。正數的反碼是自己本身;負數的反碼是原碼除符號位不動,其他所有位按位取反。

3.補碼。正數的補碼是自己本身;負數的補碼是反碼加一得到的(運算時包括符號位)。

故,正數的原反補碼都是相等的,負數的原反補碼是相互轉換得到的。

舉例:計算機儲存並計算8-5,因為cpu只有加法器,故要將8-5轉換成8+(-5)來計算。

8的原碼:0000 1000

8的反碼:0000 1000

8的補碼:0000 1000

5的原碼:1000 0101

5的反碼:1111 1010

5的補碼:1111 1011

0000 0011的符號位是0,則表示正數,原反補碼都相同,轉化為十進位就是3。

所以,資料在計算機中以補碼的形式表示和儲存,補碼的出現也更加便於計算。

二、原碼、反碼和補碼的表示範圍。

一般計算機字長32位,即用32位二進位表示數:

原碼:-[2^(n-1)-1] ~2^(n-1) -1

反碼:-[2^(n-1)-1] ~2^(n-1) -1

補碼: -2^(n-1) ~2^(n-1) -1

6樓:做而論道

在計算機系統中,數值,一律採用補碼錶示和儲存。

在計算機中,並沒有原碼和反碼。所以,原碼和反碼,與補碼的轉換,是毫無意義的。

你只要掌握「數值與補碼」的轉換,就夠用了。

下表中,有這個轉換的關係式:

原碼反碼補碼 0的表現形式

7樓:血刺瀟瀟h躬

做題目遇到的一題。想搜理解的。沒找到!

用原碼錶示帶符號的整數0時,有-0和鍵梁+0之分,其實就是符號位的變化。

補稿伍運碼形式的0,是帶負號的,因為在計算機中,負數的一律用補碼來表示。

0的補碼是在-0的原碼(10000)的基礎上,符號位不變,其它位按位取反再在低位加1(11111+1=00000),進而得到-0的補碼00000

補碼的0也就是-0: 0000 0000

原碼有2種表示,補碼只有1種。(我是橘脊用8位二進位來舉例的。)

8樓:沙裡波特

原碼反碼補碼,都是代表數字的。

小學就學過,慶知數字只有:負數、零、滑差中整數。

零,只有乙個零。

並沒有什麼正零負零。

而在原碼和反碼中,乙個零,卻都弄了兩個碼!

東食西宿嗎? 不像話。

補碼,才是合理的!因為,零,只有乙個補碼。所以,計算機中,只使用補碼,根本就不用原碼信山和反碼。

整數的原碼,反碼和補碼的表示整數的原碼反碼補碼是什麼意思??

原碼錶示 將符號位數碼化了的數,其中 用0表示,用1表示。反碼錶示 正數的反碼錶示與原碼錶示一樣 負數的反碼錶示是原碼錶示的符號位不變,數值位逐位取反。補碼錶示 正數的補碼錶示與原碼錶示一樣 負數的補碼錶示是原碼錶示的符號位不變,數值位逐位取反後最低位加1 反碼錶示最低位加1 例 63 原 0111...

原碼 補碼 反碼 移碼,原碼,反碼,補碼和移碼 原碼 1001101,反碼,補碼,移碼各是多少?

按一個位元組來算 8位 103的二進位制表示為1100111 原碼 11100111 最高位為符號位,下同 補碼 10011001 反碼 10011000 移碼 00011001 原碼錶示法是機器數的一種簡單的表示法。其符號位用0表示正號,用1表示負號,數值一般用二進位制形式表示。設有一數為x,則原...

0的原碼 反碼 補碼是什麼,什麼是原碼 補碼 反碼?

計算機中的儲存系統都是用2進位制儲存的,對我們輸入的每一個資訊它都會自動轉變成二進位制的形式,而二進位制在儲存的時候就會用到原碼,反碼和補碼 例如 輸入25 原碼就是 0000000000011001 反碼 1111111111100110 補碼 1111111111100111 數值在計算機中表示...