計算器原碼 反碼和補碼和位移的一些總結

2021-07-30 11:53:16 字數 1426 閱讀 4360

在計算機系統中,數值一律用補碼來表示和儲存;

原碼一般是針對使用者而言,補碼是針對計算機的具體儲存來使用。

轉換關係:

a、正整數的補碼是其二進位制表示,與

原碼相同

【例1】+9的補碼是00001001。(備註:這個+9的補碼是用8位2進製來表示的,補碼表示方式很多,還有16位二進位制補碼表示形式,以及32位二進位制補碼表示形式,64位進製補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。)

b、求負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1

同乙個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二

進製中是11110001,然而在16位二進位制補碼表示中,就是1111111111110001。以下都使用8位2進製來表示。

【例2】求-5的補碼。

-5對應正數5(00000101)→所有位取反(11111010)→加1(11111011),

所以-5的補碼是11111011,儲存到乙個位元組就是0xfb。

c、0的補碼

【例3】數0的補碼表示是

唯一的。

[+0]補=[+0]反=[+0]原=00000000

[ -0]補=11111111+1=00000000

已知乙個數的補碼,求原碼的操作其實就是對該補碼再求補碼:

⑴如果補碼的符號位為「0」,表示是乙個正數,其原碼就是補碼。

⑵如果補碼的符號位為「1」,表示是乙個負數,那麼求給定的這個補碼的補碼就是要求的原碼。

解釋:

補碼這個編碼方案要解決的是如何在機器中表示負數,其本質意義為用乙個正數來表示這個正數對應的負數。所謂-20的補碼是指:如何在機器中用補碼形式表示-20。具體過程是這樣的:將20的二進位制形式直接寫出00010100,然後所有位取反變成11101011,再加1變成了11101100。最簡單的補碼轉換方式,不必去理會轉換過程中的符號位,只關注轉換前和最終轉換後的符號位就行了。

那麼對11101100求出其補碼又具有什麼現實含義呢?對乙個數求補,邏輯過程是對這個數的所有的二進位制位按位取反再加1。現實含義是求出這個數對應的負數形式。對11101100求補就是求出這個數對應的負數的形式,直接操作下11101100,先所有位取反00010011,再加上1就成了00010100。對11101100求出其補碼的含義:11101100按照現行補碼碼制表示的有符號數是-20,對於-20求補就是求出其對應的負數-(-20),現實中-(-20)是+20,那麼求補運算的結果符合現實情況嗎,00010100轉換成有符號數正是+20,這就說明了補碼自身邏輯意義是完整的,是不會自相矛盾的。

【例4】已知乙個補碼為11111001,則原碼是10000111(-7)。

因為符號位為「1」,表示是乙個負數,所以該位不變,仍為「1」。

其餘七位1111001取反後為0000110;

再加1,所以是10000111。

位移的一些基礎知識:

原碼 反碼和補碼

數值有正負之分 計算機就用乙個數的最高位存放符號 0為正 1為負 這就是機器數的原碼了 假設機器能處理的位數為 8.即字長為 1byte,原碼能表示數值的範圍為 127 0 0 127 共256個.有了數值的表示方法就可以對數進行算術運算 但是很快就發現用帶符號位的原碼進行乘除運算時結果正確 而在加...

原碼 反碼 和 補碼。

這裡只講下自己對反碼的理解。大家都知道使用反碼表示負數有兩個優點,1.可以使得減法可以和加法一樣。2.符號位也參與了運算。那這是為什麼呢?下面可以進行一些簡單的數學推導 根據反碼定義,對於負數,反碼是除符號為以外取反 1。例如,4 變換步驟如下。a 4 0 000 0100 b 取反 0 111 1...

原碼 補碼和反碼

1 原碼表示法 原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用 表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼表示可記作 x 原。例如,x1 1010110 x2 一1001010 其原碼記作 x1 原 1010110 原 01010110 x2 原 1001010 原 ...