1樓:蒯淑蘭費琬
1:我們來看一下補碼的求得過程:將原碼的各位取反,再加1,得到補碼。
舉個例子,1001,它全部取反之後就是0110,再加1得到0111。將原碼與補碼加相,會得到10000。我們應該知道,計算機最基礎的運算器只能做加法,所以叫累加器,它做不了減法。
所以當需要減法的時候我們取減數的補碼,用被減數去加這個補碼。如果是1111-1001=0110的話就相當於1111-(10000-0111)=1111
0111=0110,其中0111是1001的補碼。由於碼不像數字,碼是有位數的限制的,當有多於其位數的操作時是不表現出來的,所以減去一個數的原碼就相當於加上它的補碼。相信,看明白了這一條,第三個問題也就解決了。
2.規定……慣例的,當初就這麼說的,反正二進位制就兩個數,不是0就是1,取反就是對方。1比0大,正數比負數大……我是這樣想的,這一點我不敢肯定。
4.不記符號位的話,原碼
補碼=100...0(0的位數與原碼的位置一致),那你說這兩個碼是不是互為原補碼?取補碼之後再取一次補碼就是自身了。
2樓:儀恕遊靜
假如是負數,反碼就是原碼錶示符號的最高位不變,0變成1,1變成0。補碼就是在原碼的基礎上再加1。
假如是正數,那麼原碼、反碼、補碼都跟原碼相同不用再進行上述處理。
你說的14
是正數,不用進行取反再加1來計算其補碼,它的補碼就是00001110
怎麼求補碼的原碼?
3樓:橘子閃爍
已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
1、如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。
2、如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。
例如:已知一個補碼為11111001,則原碼是10000111(-7)。因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。
其餘七位1111001取反後為0000110;再加1,所以是10000111。
4樓:狼道刀
以補碼10010110為例,有兩種計算方法求原碼:
演算法1:
補碼=原碼取反再加1的逆運算。
10010110是補碼,應先減去1變為反碼,得10010101;
由反碼取得原始碼即除符號位外其他為按位取反,得11101010,即十進位制數的-106。
演算法2:
負數補碼速演算法,由最低位(右)向高位(左)查詢到第一個1與符號位之間的所有數字按位取反的逆運算
10010110是補碼,符號位與最後一個1之間的所有數字按位取反,得11101010
擴充套件資料
計算機系統中的補碼和原碼:
在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。
原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:
+0和-0),其餘位表示數值的大小。原碼不能直接參加運算,可能會出錯。
例如數學上,1+(-1)=0,而在二進位制中00000001+10000001=10000010,換算成十進位制為-2。顯然出錯了。
5樓:炸毛什造
已知一個數的補碼,求原碼的操作分兩種情況:
(1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼。
(2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取反,然後再整個數加1。
例如,已知一個補碼為11111001,則原碼是10000111(-7):因為符號位為「1」,表示是一個負數,所以該位不變,仍為 「1」;其餘7位1111001取反後為0000110;再加1,所以是10000111。
6樓:美食藝術
補碼的運算:聽老師講解真值、原碼、反碼和補碼
7樓:
9碼的原始碼他們這些人馬,數值對比都是有很大的差距。
8樓:沙裡波特
對於二進位制數來說,取反加1、減1取反,結果是完全相同的。
所以,可以使用同樣的方法來做。
甚至,求補碼時,你也可以用「減1取反」,一點也沒毛病。
9樓:藍雨
補碼的補碼就是原碼!
帶符號數中只有負數的原碼反碼和補碼是不一樣的,正數的這些都是一樣的,涉及碼制轉換!
原碼求補碼是取反加1
補碼求原碼還是是取反加1(符號位除外)
10樓:匿名使用者
有符號數,最高位為1的話除最高位之外取反加1即為原始碼,正數不變
11樓:匿名使用者
如果是帶符號的數,那麼看它的最高位,如果是1,則是負數,符號位不變,減一後取反碼。
是正數就不變。它的補碼就是它的原始碼
原碼=補碼-1後的反碼
12樓:匿名使用者
就是對補碼求補碼,你可以試試!
原碼求補碼是取反加一,為什麼補碼求原碼也是取反加一?
13樓:匿名使用者
按原碼變補碼的規則,補碼變原碼應該是「減1取反」,可是對於二進位制,「減1取反」和「取反加1」的效果是一樣的,所以補碼的補碼就是原碼;
原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:
+0和-0),其餘位表示數值的大小。
計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。
14樓:沙裡波特
原碼求補碼是取反加一,(對。)
補碼求原碼也是取反加一?(不全對。)
一般理解,應該是「減一取反」。
但是,對於二進位制來說,取反加一、減一取反,結果是相同的。為什麼?這是從實踐中,得到的經驗公式。沒有理論證明。
----注意:-128 具有八位補碼,但是卻沒有原碼反碼。
所以:用-128的補碼,求-128的原碼,也是取反加一? (不對!!!)
15樓:匿名使用者
負數的原碼取反加一就是補碼
正數的原碼和補碼一樣
-2 為1 10 補碼為 0100 10取反加一為110
2 為0 10前面是符號位,後面是二進位制值,ok?
16樓:匿名使用者
你也可以用補碼減一,再取反啊,好像結果一樣
-128的二進位制補碼是怎麼得來的?
17樓:匿名使用者
補碼10000000唯一的表示-128是一個規定,不需要推算,理由如下:
現在來推-128的補碼:
-128的補碼:10000000 - 10000000(+128沒有符號位)=10000000
-128的反碼:1111 1111(1000 0000 +1=1000 0000+1111 1111=1111 1111)
-128的原碼:10000000(反碼取反)
往回推:
-128的原碼 10000000 (-128,進位被捨去)
-128的反碼 11111111
-128的補碼 10000000(11111111(反碼) + 1=10000000,這裡實際上真正相加的是11111111後面的7位,第1位是符號位始終不會變,所以,當進到第8位的時候,就表示溢位了,會被捨棄。0只有一個補碼00000000,如果是這樣,那麼10000000就不會表示成-0的補碼
即:補碼1000 0000唯一的表示-128,在補碼中用(-128)代替了(-0),所以補碼的表示範圍為: (-128~0~127)共256個.
注意:(-128)也有相對應的原碼和反碼, 它的反碼是(11111111)原碼仍然是(10000000)(-128)
18樓:沙裡波特
什麼是補碼?怎麼求補碼?
看看書,就會知道,補碼,是有嚴格定義的。
按照定義來求補碼,就用不著涉及原碼反碼。
如果,你非要用求反加一的做法,就難免碰上原碼反碼。
但是,的八位碼長的限制下,-128,既沒有原碼,也沒有反碼。
這時,你還要用求反加一的做法,就一定會碰的頭破血流。
------------
按照補碼的定義,負數的補碼,定義如下:
[ x ]補 = 模-| x |
按照定義,-128,如下求補碼。
[-128]補 = 256-|-128| = 128寫成二進位制,就是:1000 0000。
------------
這就是詳解。
簡不簡單? 意不意外?
是不是比「求反加一」更方便?
利用定義,可以求任何負數的補碼。
但是,多數人,都是推崇「求反加一」的。
你們這些人,都是被人忽悠瘸了。呵呵
如此簡單的定義、方法,你們不學、不用,
偏要去鑽死衚衕,呵呵
使用求反加一!!!
你們能找到-128 的原碼、反碼嗎?
19樓:匿名使用者
求負數的補碼的方法是:將該數的絕對值的二進位制形式,按位取反再+1.
|-128|=128;
(128)十進位制=(10000000)二進位制;
取反:01111111
+1:10000000
就得到結果了
20樓:匿名使用者
10000000表示-128的補碼,你可以理解為是一個特殊性。
各種8位二進位制的表示法的資料範圍如下:
原碼: -127 ~ 127
反碼: -127 ~ 127
補碼: -128 ~ 127
補碼運算:正數為原碼本身,負數為原碼取反加一127為正數,其補碼為原碼0111 1111-127為負數,其補碼為原碼0111 1111,取反1000 0000,加一,1000 0001。
根據這情況來看,表示-0,不是的,-0的原碼是1000 0000補碼是0000 0000。+0的補碼也是0000 0000
於是就有了規定 1000 0000 定為 -128的補碼這種定法和上面數學層面的表述是一致的。
這樣規定後,負數的補碼在機器中就好算了。
在約定的範圍內(-128-+127,對16位32位64位等擴大範圍)先將該負數取絕對值,再用二進位制表示出這個絕對值 (不管符號位)對該二進位制數進行取反加一操作就得到負數的補碼了-128 絕對值是 128
128的二進位制表示為:
1000 0000
取反 0111 1111
加1 1000 0000
這就是-128的補碼
這種辦法算出的結果符合「規定值」,規定而已。
21樓:匿名使用者
-128是人為規定的。
因為8位2進位制中,存在 「-0」(1000 0000)和"0"(0000 0000),雖然「-0」也是「0」,但根據正、反、補碼體系,「-0」的補碼和「+0」是不同的,這樣就出現兩個補碼代表一個數值的情況。為了將補碼與數字一一對應,所以人為規定「0」一律用「+0」代表。同時為了充分利用資源,就將原來本應該表示「-0」的補碼規定為代表-128。
二進位制數11010100的原碼,反碼,補碼和移碼是什麼
正數的原 反 補碼都一樣 0的原碼跟反碼都有兩個,因為這裡0被分為 0和 0。二進位制數11010100 是負數 2 6 2 4 2 2 x 原 11010100 符號位不變,原碼的其他位按位取反 x 反 10101011 補碼在反碼的基礎上按照正常的加法運算加1 x 補 10101100 移碼不論...
原碼和補碼的表示範圍,8位二進位制原碼 補碼 反碼的表示範圍各是多少 怎麼算的?
如果是n 8位二進位制 原碼範圍 127 127,寫成16進製為feh 7fh補碼範圍 128 127,寫成16進製為ffh 7fh如果是n 16位二進位制 原碼範圍 32767 32767,補碼範圍 32768 32767 如果是n 32位二進位制 原碼範圍 232 1 1 2 32 1 1 補碼...
關於二進位制轉換十進位制的問題,二進位制數如何轉換成十進位制數?
你看錯啦,現在先來指定格式 a b a是底數,b是指數,a b就是a的b次方的意思。a b 表示a是b進位制數。那麼你看到的題目其實是 11011 2 1 2 4 1 2 3 0 2 2 1 2 1 1 2 0 16 8 0 2 1 27另外舉個十進位制例子 956 9 10 2 5 10 1 6 ...