原碼補(bǔ)碼反碼轉(zhuǎn)換器在線 原碼反碼補(bǔ)碼的關(guān)系
夕逆IT
- 前端設(shè)計(jì)
- 2023-08-13
- 70

其實(shí)原碼補(bǔ)碼反碼轉(zhuǎn)換器在線的問(wèn)題并不復(fù)雜,但是又很多的朋友都不太了解原碼反碼補(bǔ)碼的關(guān)系,因此呢,今天小編就來(lái)為大家分享原碼補(bǔ)碼反碼轉(zhuǎn)換器在線的一些知識(shí),希望可以幫助到大...
其實(shí)原碼補(bǔ)碼反碼轉(zhuǎn)換器在線的問(wèn)題并不復(fù)雜,但是又很多的朋友都不太了解原碼反碼補(bǔ)碼的關(guān)系,因此呢,今天小編就來(lái)為大家分享原碼補(bǔ)碼反碼轉(zhuǎn)換器在線的一些知識(shí),希望可以幫助到大家,下面我們一起來(lái)看看這個(gè)問(wèn)題的分析吧!
2的原碼,反碼,補(bǔ)碼是這樣的么
所有正數(shù)的原碼,反碼和補(bǔ)碼全部都是一樣的。以8位二進(jìn)制碼為例:(+00110)2的原碼,反碼和補(bǔ)碼都是00000110
反碼和原碼轉(zhuǎn)換
反碼的表示方法是:正數(shù)的反碼是其本身,負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上,符號(hào)位不變,其余各個(gè)位取反。
[+1]=[00000001](原碼)=[00000001](反碼)[-1]=[10000001](原碼)=[11111110](反碼)可見(jiàn)如果一個(gè)反碼表示的是負(fù)數(shù),人腦無(wú)法直觀的看出來(lái)它的數(shù)值。通常要將其轉(zhuǎn)換成原碼再計(jì)算。
-17的原碼反碼補(bǔ)碼移碼
原碼10010001,反碼11101110,補(bǔ)碼
11101111。
x=-17d=-10001b
若字長(zhǎng)8位:
[x]原=10010001b
[x]反=11101110b
[x]補(bǔ)=11101111b用八位二進(jìn)制表示,最高位表示符號(hào)位,1為負(fù),0為正。補(bǔ)碼為其絕對(duì)值的原碼取反加1,17原碼為00010001,取反加1為11101110+1=11101111
原碼與補(bǔ)碼的轉(zhuǎn)換:
1、首先要知道轉(zhuǎn)換規(guī)則:將原代碼轉(zhuǎn)換為逆代碼:符號(hào)位不變,數(shù)字位分別“按位倒轉(zhuǎn)”。
2、反向代碼轉(zhuǎn)換也是如此,但規(guī)則不同:符號(hào)位保持不變,數(shù)字位“按位倒轉(zhuǎn)”。
3、然后,原碼轉(zhuǎn)換為補(bǔ)碼的規(guī)則:保持符號(hào)位不變,數(shù)字位逐位反轉(zhuǎn),最后一位加1。
4、將最后的補(bǔ)碼轉(zhuǎn)換為原碼:保持符號(hào)位不變,數(shù)字位按位反向,最后一位加1,即補(bǔ)碼的補(bǔ)碼等于原碼。
5、補(bǔ)碼(變量補(bǔ)碼)的轉(zhuǎn)換規(guī)則與之前不同,將符號(hào)位和數(shù)字位顛倒,最后一位加1。
原碼反碼補(bǔ)碼計(jì)算器
1、二進(jìn)制補(bǔ)碼的計(jì)算方法
二進(jìn)制的補(bǔ)碼計(jì)算非常簡(jiǎn)單,各種教材中也經(jīng)常使用二進(jìn)制來(lái)說(shuō)明源碼、反碼與補(bǔ)碼三者的關(guān)系,掌握一定基礎(chǔ)的人都知道一下規(guī)則:
1.1原碼
最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
例如:X=0b11(3),四比特表示原碼=0011(3);X=-0b11(-3),四比特表示原碼=1011(11);
1.2反碼
最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
正數(shù)的反碼等于本身,負(fù)數(shù)的反碼除符號(hào)位外,各位取反:
例如:X=0b11(3),四比特表示原碼=0011(3),對(duì)應(yīng)反碼為=0011(3);X=-0b11(-3),四比特表示原碼=1011(11),對(duì)應(yīng)反碼為=1100(12);
1.3補(bǔ)碼
最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
正數(shù)的補(bǔ)碼等于本身,負(fù)數(shù)的補(bǔ)碼等于反碼+1:
例如:X=0b11(3),四比特表示原碼=0011(3),對(duì)應(yīng)反碼為=0011(3),補(bǔ)碼為=0011(3);X=-0b11(-3),四比特表示原碼=1011(11),對(duì)應(yīng)反碼為=1100(12),補(bǔ)碼為1101(13);
2、十進(jìn)制的補(bǔ)碼計(jì)算方法
對(duì)于十進(jìn)制數(shù)來(lái)說(shuō),通過(guò)前面的性質(zhì)不難得到正十進(jìn)制數(shù)補(bǔ)碼等于其本身,對(duì)于負(fù)十進(jìn)制數(shù)來(lái)說(shuō)如果還按位進(jìn)行運(yùn)算就太麻煩了!為了講明白,我們從補(bǔ)碼的起因說(shuō)起:
“反碼加一”只是補(bǔ)碼所具有的一個(gè)性質(zhì),不能被定義成補(bǔ)碼。負(fù)數(shù)的補(bǔ)碼,是能夠和其相反數(shù)相加通過(guò)溢出從而使計(jì)算機(jī)內(nèi)計(jì)算結(jié)果變?yōu)?的二進(jìn)制碼。這是補(bǔ)碼設(shè)計(jì)的初衷,具體目標(biāo)就是讓1+(-1)=0,這利用原碼是無(wú)法得到的:
而在補(bǔ)碼中:
所以對(duì)于一個(gè)n位的負(fù)數(shù)-X,有如下關(guān)系:
所以假設(shè)寄存器是n位的,那么-X的補(bǔ)碼,應(yīng)該是
的二進(jìn)制編碼。
例如前面舉得例子:
例如:X=-0b11(-3),四比特表示原碼=1011(11),對(duì)應(yīng)反碼為=1100(12),補(bǔ)碼為1101(13);
如果寄存器4位,-3對(duì)應(yīng)的補(bǔ)碼二進(jìn)制數(shù)為13,剛好是
正十進(jìn)制數(shù)補(bǔ)碼等于其本身,n位寄存器下-X的補(bǔ)碼等于
對(duì)應(yīng)的二進(jìn)制編碼。
如果使用python的話,可以使用&來(lái)快速獲取補(bǔ)碼:
-3&0xfOut[1]:135&0xfOut[2]:5
這里的0xf指的是0b1111,表示4位的寄存器。如果是7位寄存器,0b111111就是0x3f。
3、已知補(bǔ)碼怎么求原碼?
對(duì)于正數(shù)來(lái)說(shuō),根據(jù)前面的介紹很容易知道原碼=補(bǔ)碼=反碼,接下來(lái)主要討論給定負(fù)數(shù)的補(bǔ)碼怎么求負(fù)數(shù)的原碼:
3.1二進(jìn)制
先說(shuō)結(jié)論:補(bǔ)碼的補(bǔ)碼就是原碼。下面開始證明:
已知二進(jìn)制的補(bǔ)碼為
,根據(jù)1.3中求補(bǔ)碼的過(guò)程易得
事實(shí)上上式還等價(jià)于:
可以簡(jiǎn)單證明一下,根據(jù)反碼實(shí)際的求解過(guò)程可以得到下面式子:
當(dāng)a=a-1時(shí)有:
上面兩式子說(shuō)明了:
用文字描述即:取反加一等價(jià)于減一取反!
所以二進(jìn)制補(bǔ)碼有如下關(guān)系:
也就是說(shuō)補(bǔ)碼的補(bǔ)碼就是原碼,有點(diǎn)負(fù)負(fù)得正的意思哦。
3.2十進(jìn)制
n位寄存器下-X的補(bǔ)碼等于
對(duì)應(yīng)的二進(jìn)制編碼。
(1)十進(jìn)制的情況下,如果給的補(bǔ)碼是無(wú)符號(hào)數(shù)
,那么原碼即
即可。
例如前面-3補(bǔ)碼無(wú)符號(hào)數(shù)是13,對(duì)應(yīng)的原碼就是
(2)十進(jìn)制的情況下,如果給的補(bǔ)碼是有符號(hào)數(shù)-Y,對(duì)應(yīng)的無(wú)符號(hào)數(shù)就是
,那么原碼就是
。
例如前面-3補(bǔ)碼有符號(hào)數(shù)是-5,對(duì)應(yīng)的原碼就是
編輯于2021-10-3013:39
原碼,反碼,補(bǔ)碼
用16bit表示,三個(gè)碼分別是:原碼、反碼、補(bǔ)碼-0:1000000000000000、1111111111111111、0000000000000000-6875:1001101011011011、1110010100100100、1110010100100101-11:1000000000001011、1111111111110100、1111111111110101如果是8位,:原碼、反碼、補(bǔ)碼分別為:-0:10000000、11111111、00000000-11:10001011、11110100、111101016875無(wú)法表示,因?yàn)?位的最大表大范圍是-128~127正數(shù):原碼=補(bǔ)碼負(fù)數(shù):原碼=正數(shù)部分(去掉負(fù)號(hào))的二進(jìn)制值,且符號(hào)位(最左邊的比特位)為1反碼=正數(shù)部分(去掉負(fù)號(hào))的二進(jìn)制值,按位取反補(bǔ)碼=反碼+1
好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!
本文鏈接:http://xinin56.com/qianduan/4290.html