-10的二进制形式是什么?如何计算?
答案 0 :(得分:7)
将-10(十进制)转换为二进制:
将数字的绝对值(| -10 | = 10)重复除以2,直到商数为0为止
(10 / 2 = 5 R 0)
(5 / 2 = 2 R 1)
(2 / 2 = 1 R 0)
(1 / 2 = 0 R 1) // zero is the value in the quotient so we stop dividing
放置剩余部分以获得二进制等效项:
1010
对于8位单元,答案是0000 1010,16位单元0000 0000 0000 1010,依此类推。
通过反转位来取一个补码(我们假设一个8位单元格保存最终值):
0000 1010
1111 0101 // bits are inverted
现在加1:
取2的补码 1111 0101
+ 1
----------
1111 0110 // final answer
4位单元会发生什么?
一个人的补充是:
1010
0101 // inverted bits
取2的补码产生:
0101
+ 1
----
0110 // final answer for a 4-bit cell
由于数字应为负数且结果不表示(当数字以1开头时,数字从0开始)会发生溢出情况。
答案 1 :(得分:4)
取二进制形式10,反转所有位,然后加一个。
10 0000 1010 invert 1111 0101 add 1 1111 0110
答案 2 :(得分:1)
关注this链接。您可以通过查找-n
的{{1}}来找到负数的二进制形式two's complement
。
答案 3 :(得分:1)
你的问题没有“正确”的答案。首先,您必须定义要使用的表示。您要使用two's complement,ones' complement,sign-magnitude还是其他内容?然后你必须定义要使用的位数。
假设我们正在使用5位宽的表示法。
+10: 0 1 0 1 0
让我们来看看符号幅度系统。在此系统中,如果数字为负数,则最高有效位(第5位)为1
,否则为0
。其余的位表示数字的大小(绝对值)。
所以我们得到:
-10: 1 1 0 1 0 (sign-magnitude, 5 bits)
现在让我们来看看补充。这里,负数表示为仅将1
更改为0
s,反之亦然(因此,名称为'补码 - 您补充了一个长{{1}序列的数字} S)。
所以我们得到:
1
最后,让我们来看看两个补码系统。在这里,我们在其补充系统中取一个数字,然后将-10: 1 0 1 0 1 (ones' complement, 5 bits)
添加到其中。
所以我们得到:
1
因此,负数的二进制表示取决于我们使用的系统以及我们可用的位数。
另外,您可能已经注意到撇号在 1'补码和 2的补码中的位置。为什么不是一个补充或两个'补充?然后回答,来自Knuth:
2的补码数补充单个2的幂,而1的补码数补充1的长序列。实际上,还有一个“二进制”补码表示法,它具有基数3和相对于(2 ... 22) 3 的补充