- N +

補碼原碼反碼在線轉換?原碼反碼補碼例題詳解

今天給各位分享補碼原碼反碼在線轉換的知識,其中也會對原碼反碼補碼例題詳解進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!

原碼反碼補碼計算器

1、二進制補碼的計算方法

二進制的補碼計算非常簡單,各種教材中也經常使用二進制來說明源碼、反碼與補碼三者的關系,掌握一定基礎的人都知道一下規則:

1.1原碼

最高位為符號位,0表示正數,1表示負數。

例如:X=0b11(3),四比特表示原碼=0011(3);X=-0b11(-3),四比特表示原碼=1011(11);

1.2反碼

最高位為符號位,0表示正數,1表示負數。

正數的反碼等于本身,負數的反碼除符號位外,各位取反:

例如:X=0b11(3),四比特表示原碼=0011(3),對應反碼為=0011(3);X=-0b11(-3),四比特表示原碼=1011(11),對應反碼為=1100(12);

1.3補碼

最高位為符號位,0表示正數,1表示負數。

正數的補碼等于本身,負數的補碼等于反碼+1:

例如:X=0b11(3),四比特表示原碼=0011(3),對應反碼為=0011(3),補碼為=0011(3);X=-0b11(-3),四比特表示原碼=1011(11),對應反碼為=1100(12),補碼為1101(13);

2、十進制的補碼計算方法

對于十進制數來說,通過前面的性質不難得到正十進制數補碼等于其本身,對于負十進制數來說如果還按位進行運算就太麻煩了!為了講明白,我們從補碼的起因說起:

“反碼加一”只是補碼所具有的一個性質,不能被定義成補碼。負數的補碼,是能夠和其相反數相加通過溢出從而使計算機內計算結果變為0的二進制碼。這是補碼設計的初衷,具體目標就是讓1+(-1)=0,這利用原碼是無法得到的:

而在補碼中:

所以對于一個n位的負數-X,有如下關系:

所以假設寄存器是n位的,那么-X的補碼,應該是

的二進制編碼。

例如前面舉得例子:

例如:X=-0b11(-3),四比特表示原碼=1011(11),對應反碼為=1100(12),補碼為1101(13);

如果寄存器4位,-3對應的補碼二進制數為13,剛好是

正十進制數補碼等于其本身,n位寄存器下-X的補碼等于

對應的二進制編碼。

如果使用python的話,可以使用&來快速獲取補碼:

-3&0xfOut[1]:135&0xfOut[2]:5

這里的0xf指的是0b1111,表示4位的寄存器。如果是7位寄存器,0b111111就是0x3f。

3、已知補碼怎么求原碼?

對于正數來說,根據前面的介紹很容易知道原碼=補碼=反碼,接下來主要討論給定負數的補碼怎么求負數的原碼:

3.1二進制

先說結論:補碼的補碼就是原碼。下面開始證明:

已知二進制的補碼為

,根據1.3中求補碼的過程易得

事實上上式還等價于:

可以簡單證明一下,根據反碼實際的求解過程可以得到下面式子:

當a=a-1時有:

上面兩式子說明了:

用文字描述即:取反加一等價于減一取反!

所以二進制補碼有如下關系:

也就是說補碼的補碼就是原碼,有點負負得正的意思哦。

3.2十進制

n位寄存器下-X的補碼等于

對應的二進制編碼。

(1)十進制的情況下,如果給的補碼是無符號數

,那么原碼即

即可。

例如前面-3補碼無符號數是13,對應的原碼就是

(2)十進制的情況下,如果給的補碼是有符號數-Y,對應的無符號數就是

,那么原碼就是

例如前面-3補碼有符號數是-5,對應的原碼就是

編輯于2021-10-3013:39

-70的原碼反碼補碼

70的原碼為01000110

那么70的反碼為10111001

70的補碼為10111001------------反碼、補碼一樣,但是意義不同.

10000的原碼反碼補碼

答:10000的原碼反碼補碼是10000(十進制)=10011100010000(二進制)。

下面科普十進制接合過程:駕駛員松開離合器踏板在回位彈簧作用下踏板恢復到原位,同時帶動推桿和分離軸承回位。即接合過程操縱機構的移動是分離過程的逆過程。當分離軸承與膜片彈簧分離板之間出現預留間隙和膜片彈簧重新將壓盤壓緊在從動盤上之后,接合過程結束,離合器恢復傳遞動力功能。

反碼和原碼轉換

反碼的表示方法是:正數的反碼是其本身,負數的反碼是在其原碼的基礎上,符號位不變,其余各個位取反。

[+1]=[00000001](原碼)=[00000001](反碼)[-1]=[10000001](原碼)=[11111110](反碼)可見如果一個反碼表示的是負數,人腦無法直觀的看出來它的數值。通常要將其轉換成原碼再計算。

原碼,反碼與補碼怎么計算的

首先看正數,先將十進制的正數轉換成二進制形式。

2.

之后可以根據原碼直接寫出補碼和反碼,因為正數的補碼和反碼就等于原碼。

3.

負數情況不一樣,將一個十進制負數轉換成原碼。

4.

再將原碼轉換成反碼,注意前四位符號位不變,后四位數字位全部取反。

好了,文章到此結束,希望可以幫助到大家。

返回列表
上一篇:
下一篇: