原碼反碼補碼計算器
發(fā)布時間:2025-11-03 | 來源:互聯(lián)網轉載和整理
1、二進制補碼的計算方法二進制的補碼計算非常簡單,各種教材中也經常使用二進制來說明源碼、反碼與補碼三者的關系,掌握一定基礎的人都知道一下規(guī)則:
1. 1 原碼最高位為符號位,0表示正數(shù),1表示負數(shù)。
例如: X = 0b11 (3),四比特表示原碼 = 0011(3) ; X = - 0b11(-3) ,四比特表示原碼 = 1011(11) ;1.2 反碼最高位為符號位,0表示正數(shù),1表示負數(shù)。正數(shù)的反碼等于本身,負數(shù)的反碼除符號位外,各位取反:例如: X = 0b11 (3),四比特表示原碼 = 0011(3),對應反碼為 = 0011(3) ; X = - 0b11(-3) ,四比特表示原碼 = 1011(11),對應反碼為 = 1100(12) ;1.3 補碼最高位為符號位,0表示正數(shù),1表示負數(shù)。正數(shù)的補碼等于本身,負數(shù)的補碼等于反碼+1:例如: X = 0b11 (3),四比特表示原碼 = 0011(3),對應反碼為 = 0011(3) ,補碼為 = 0011(3); X = - 0b11(-3) ,四比特表示原碼 = 1011(11),對應反碼為 = 1100(12),補碼為1101(13) ;2十進制的補碼計算方法對于十進制數(shù)來說通過前面的性質不難得到正十進制數(shù)補碼等于其本身,對于負十進制數(shù)來說如果還按位進行運算就太麻煩了!為了講明白,我們從補碼的起因說起:“反碼加一”只是補碼所具有的一個性質,不能被定義成補碼。負數(shù)的補碼是能夠和其相反數(shù)相加通過溢出從而使計算機內計算結果變?yōu)?的二進制碼。這是補碼設計的初衷,具體目標就是讓1+(-1)=0,這利用原碼是無法得到的:而在補碼中:所以對于一個n位的負數(shù)-X,有如下關系:所以假設寄存器是n位的,那么-X的補碼,應該是的二進制編碼。例如前面舉得例子:例如: X = - 0b11(-3) ,四比特表示原碼 = 1011(11),對應反碼為 = 1100(12),補碼為1101(13) ;如果寄存器4位,-3對應的補碼二進制數(shù)為13,剛好是正十進制數(shù)補碼等于其本身,n位寄存器下-X的補碼等于對應的二進制編碼。如果使用python的話,可以使用來快速獲取補碼:-30xf Out: 13 50xf Out: 5這里的0xf指的是0b1111,表示4位的寄存器。如果是7位寄存器,0b111111就是0x3f。
3、已知補碼怎么求原碼?對于正數(shù)來說根據(jù)前面的介紹很容易知道 原碼=補碼=反碼,接下來主要討論給定負數(shù)的補碼怎么求負數(shù)的原碼:3.1 二進制先說結論:補碼的補碼就是原碼。下面開始證明:已知二進制的補碼為,根據(jù)1.3中求補碼的過程易得事實上上式還等價于:可以簡單證明一下,根據(jù)反碼實際的求解過程可以得到下面式子:當a=a-1時有:上面兩式子說明了:用文字描述即:取反加一等價于減一取反!所以二進制補碼有如下關系:也就是說補碼的補碼就是原碼,有點負負得正的意思哦。
3.2 十進制n位寄存器下-X的補碼等于對應的二進制編碼。
(1)十進制的情況下,如果給的補碼是無符號數(shù),那么原碼即即可。例如前面-3補碼無符號數(shù)是13,對應的原碼就是(2)十進制的情況下,如果給的補碼是有符號數(shù)-Y,對應的無符號數(shù)就是,那么原碼就是。例如前面-3補碼有符號數(shù)是-5,對應的原碼就是編輯于 2021-10-30 13:39