十进制到二进制数转换

时间:2010-01-29 05:17:37

标签: binary computer-science

-10的二进制形式是什么?如何计算?

4 个答案:

答案 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 complementones' complementsign-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 的补充