2015-09-02 178 views
3

如何以其他二进制格式编写整数值"60"如何在16位二进制,32位二进制和64位二进制中编写整数值“60”

8bit60二进制代码=的60111100

16bit二进制代码=?

32bit二进制码60 =?

64bit二进制码60 =?

是否111100000000为16位二进制?

为什么8位二进制代码包含6位而不是8位?

我搜索了答案,但我无法得到这些答案。请提供答案,因为我仍然是这方面的初学者。

+0

如果是二进制,位宽零总是从立场开始加前缀。如果你问的是存储,它将取决于endian –

+1

'60'的二进制表示总是会是'111100',句号。它是6位而不是8位,因为它只需要6位来表示该值。如果您使用16,32或64位值存储内容,它仍然只需要6位。如果它被填充到一定的宽度,它将被填充零,但是“00111100”仍然是“111100”。一个16位的二进制值“111100000000”将是十进制的“3840”。 (使用Windows,你可以自己检查。启动计算器,查看 - >程序员,你可以看到十六进制和二进制,不同的位(字节= 8,字= 16,双字= 32,Qword = 64)。 –

回答

6

想象一下,你正在写十进制值60。您可以使用2位,4位或8位写:

1. 60 
2. 0060 
3. 00000060 

在我们的十进制,最显著数字是向左,因此增加的数字为代表的数量,在不改变价值,手段只需在左侧添加零。

现在,在大多数二进制表示中,这将是相同的。十进制60只仅需要6位来表示,所以一个8位或16位表示将是相同的,除了零的左填充:

1. 00111100 
2. 00000000 00111100 

注:有些操作系统,软件,硬件或存储设备可能有不同的Endianness - 这意味着它们可能会存储16位值,其中最低有效字节在先,然后是最重要的字节。二进制表示法仍然是MSB-上的左,如上,但阅读这样的小端设备的内存将显示任何16位块将内部逆转:

1. 00111100 - 8bit - still the same. 
2. 00111100 00000000 - 16bit, bytes are flipped. 
+0

非常感谢你的好解释 –

3

每个数字都有它自己的二进制数,这意味着只有一个! 一个16/32/64位系统上111100 - 60只是看起来相同与盈数的增加(regulary未示出)许多0 等16位将是0000000000111100 32位 - 0000000000000000000000000011110 等

+1

哦和111100只是你需要的位号码被显示,因此实际上在8位60是00111100 – anon

+0

非常感谢你 –

0

对于存储Endian事项...否则位宽零总是前缀,所以60将是...

8bit: 00111100 
16bit: 0000000000111100 
+0

非常感谢你 –