了解自己的补体

时间:2019-02-07 00:16:38

标签: binary number-systems ones-complement

我只想问一个关于二进制补码的补充问题,也许有人可以帮助我理解。

我正在研究计算机安全性测试,并且正在练习将十进制数转换为二进制数,然后使用一个和两个的补码。我给了十进制数字237并将其转换为二进制形式的11101101。我了解您可以互补,这很简单。当我将其反转时,得到00010010,但是答案省略了前三个0。有人可以向我解释为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

值237太大,无法用补码存储在单个8位带符号字节中。如果将其存储在16位int中,则它及其补码取反将以2为基数表示各自的表示形式。

0000000011101100

1111111100010011

手动进行这种算术运算时,如果打算以后取反位,请在数字左侧保留一些额外的数字,以说明数字的符号。

答案 1 :(得分:0)

那些以0开头的字符没有任何意义。基本上,十进制中的一个可以说07 == 7 == 00000000007,所以在二进制中同样地00010010 == 10010 == 0000000000000010010成立。