案例1:
让我试着用4位来表示2的补码中的-7:
7,二进制: 0111
1中的7补码:1000
7加2的补码:1001
所以把我的2的数字转换成十进制:-1x2^3+0+0+1x2^0
=> -8+1=-7 its correct !!! 案例2:
让我试着用4位来表示2的补码中的7:
二进制:-7 \f25 1111 -7
1中的7补码:1000
7加2的补码:1001
所以把我的2的数字转换成十进制:-1x2^3+0+0+1x2^0
=> -8+1=-7仍然是-7,我错了!
发布于 2019-07-14 01:02:25
你稍微混淆了一些概念-
最高有效位(最高有效位)表示数字的符号。其中0代表积极,1代表消极。此外,MSB不参与数字转换(如果它代表符号)。
因此,二进制形式的-7是1111而不是0111。
现在,要对二进制数进行加、减、除、乘运算,我们可以在MSB中使用有符号数,然后定义一组新的规则来获得正确的结果。
或
使用complements方法来做这件事。
计算一个数的二的补数
加1
+7 -> 0111 (+) -7 -> 1001 (2s complement) ...................... 0 -> 10000 (ignoring the carry over MSB we will get zero which is the correct answer)
https://stackoverflow.com/questions/57020458
复制相似问题