14的二進位制原碼,取反,再加1得其補碼,我知道原碼,想知道取反是怎麼算出來,再加1得其補碼,就是想知道

2022-08-03 05:30:24 字數 5831 閱讀 8343

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 ...