java計算器源代碼 補碼計算器?
補碼計算器?1.二進制補碼的計算方法二進制補碼計算非常簡單。各種教材中經常用二進制來說明源代碼、反碼和補碼之間的關系。有一定基礎的人都知道規則:1.1原始代碼最高位是符號位,0表示正數,1表示負數。比

補碼計算器?
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,可以使用amp快速獲得補碼:
-3amp0xf輸出[1]: 13 5amp0xf輸出[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月30日編輯1:39