
反碼補碼原碼怎么轉換,原碼反碼補碼轉換關系圖

大家好,今天給各位分享反碼補碼原碼怎么轉換的一些知識,其中也會對原碼反碼補碼轉換關系圖進行解釋,文章篇幅可能偏長,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在就...
大家好,今天給各位分享反碼補碼原碼怎么轉換的一些知識,其中也會對原碼反碼補碼轉換關系圖進行解釋,文章篇幅可能偏長,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在就馬上開始吧!
原碼反碼補碼計算器
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
19的原碼反碼補碼計算
一般是按8位二進制來做,所以-19的原碼是(10010011),反碼是(11101100),補碼是(11101101)。
數據在計算機中是以二進制的形式存在的,比如bytea=6;byteb=-6
分為兩種情況來說,一種是正數,一種是負數;對于正數6來說,原碼就是00000110,反碼和補碼也是這個;而對于-6來說,原碼就是10000110,這是為什么呢?因為最高位(最左邊的)是表示符號,0表示正數,1表示負數;
不管是byte,short,int還是其他的數字,最高位都是用來表示符號的,所以-6的原碼就是10000110,負數的反碼就是符號不變,其他的取反,就是11111001;負數的補碼就是在反碼的基礎上加1就行了,由于是二進制的,是逢2進1,所以補碼就是:11111010,;
?
25的原碼反碼補碼
原碼、反碼、補碼是三種不同的二進制數表示方法,它們主要用于計算機中表示有符號整數。25的原碼是00011001,反碼是00011001,補碼是00011001,因為正整數的原碼、反碼、補碼完全一樣。
78的原碼反碼補碼是多少
78的原碼反碼補碼都是1001110。
數字78是一個正數,正數的原碼,補碼,反碼相同,先求原碼,因為正數的原碼就是他的真值.負數的原碼是在正數的原碼基礎上,最高位置1,即符號位.然后再求反碼:符號位1不變,后面的所有位取反,然后再求補碼:在反碼的基礎上,末尾加1。
78的二進制等于1001110。那么他的反碼和補碼與他的原碼相同,也為1001110。
-70的原碼反碼補碼
70的原碼為01000110
那么70的反碼為10111001
70的補碼為10111001------------反碼、補碼一樣,但是意義不同.
反碼和原碼轉換
反碼的表示方法是:正數的反碼是其本身,負數的反碼是在其原碼的基礎上,符號位不變,其余各個位取反。
[+1]=[00000001](原碼)=[00000001](反碼)[-1]=[10000001](原碼)=[11111110](反碼)可見如果一個反碼表示的是負數,人腦無法直觀的看出來它的數值。通常要將其轉換成原碼再計算。
文章分享結束,反碼補碼原碼怎么轉換和原碼反碼補碼轉換關系圖的答案你都知道了嗎?歡迎再次光臨本站哦!
本文鏈接:http://www.wzyaohuidianqi.cn/ke/2754.html
