“ 256”的二进制表示形式是什么?[关闭]


15

您可以将十进制转换为二进制,而将二进制转换为十进制。但是如何表示数字“ 256”?

255 = 11111111

1个字节不能超过8个二进制数字(位)。这怎么可能?


3
正如@Serious已经说过的。您还需要一点,因为计算机从0开始计数。在现实世界中,“手语”或“另一个人”(字节)为11 :)
SOMN 2012年

2
我以“不是一个真正的问题”来结束这个问题,因为很难说出您真正想知道什么。您是否想知道数字的二进制表示形式?您是否想知道即使数字不能容纳在一个字节中,数字是否仍然存在?您是否想知道数据如何以位和字节存储?是的,1个字节不能容纳超过8位,因为这是一个字节的定义。但这通常不会对数字施加任何限制。
Der Hochstapler 2012年

您不能在8位上表示256。
忘记了

Answers:


40

您要求如何用二进制表示256,但是我想您想知道为什么人们说字节存储的最大数字为255时,字节可以存储256个不同的数字。正如克劳迪奥普所说,计算机从0开始计数,所以0实际上是第一个数字,1是第二个数字,2是第三个数字... 255是第256个数字。

同样,对于无符号字节,11111111仅是255。当您有一个带符号的字节(一个带符号的值是可以容纳负值的一个)时,11111111实际上是-1。参见http://en.wikipedia.org/wiki/Two's_complement。二进制补码的工作方式是,将负数添加到正数将得出0。正如其他人所说,如果我们将11111111加一点,而您的数据类型只能支持8位,则最后一位将溢出并留下0。对于有符号字节,值的范围为-128至127。128个负数+ 0 + 127个正数=总共256个数字。

对于带符号的值,第一位是“符号”位。如果该位置1,则数字为负。10000000为负,01000000为正,11111111为负,01111111为正...

如果您使用的是Windows(也许Mac也有),则可以打开计算器,将其切换到编程器模式,选择sbyte,然后随便看看这些位与小数表示的关系。

Windows计算器以十进制和二进制显示256



11

如您所知,255d(十进制)等于11111111b(二进制)。如果现在想将值加1,则有两种可能性:

您只有8位。在这种情况下,发生所谓的溢出。因此,在“内部”,将添加1,从而产生100000000b(9位256d)。但是由于只有8位可用,因此低8位将被“返回”。因此,您最终得到0d = 0b(在大多数计算机体系结构上都将设置一个特殊的溢出标志,以作说明)。

认为这与用手指数数相同。想象一下,您的手指显示9d。现在,您再添加一根手指。最后得到10。如果还要添加一,该怎么办?

另一种可能性是您有超过8位可用。在这种情况下,您只需在开头再加上一个数字,结果实际上就是100000000b = 256d。

字节是计算机系统(内存系统)可以寻址的最小“单位”。这意味着,如果您只想知道一个位,就必须要求存储系统从地址中给您一个特定的字节,然后您必须弄清您对自己感兴趣的位的值。

但是,就像8位组成一个字节一样,也有更大的数据类型。2个字节组成一个字(16位),两个字(四个字节,32位)组成一个双字。当今的标准64位体系结构甚至具有64位数据类型(所谓的寄存器)。


是的,计算机不会将这64位视为由8个独立字节组成的组,而是由64位组成的单个单元。例如,如果您具有带符号的值,则这64位中只有一个是符号位。
李斯特先生,2012年

5

它是100000000,并且需要一个以上的字节。实际上,它需要9位。


0

您可以通过位移操作来表示它(根据二进制表示的字节序,它是向左还是向右)。例如,此衬里适用于大端序表示(最高有效字节在前):

1 << 8

无符号字节只能保存256个值,其中包括[0-255]的范围。对于值256,您将需要使用能够容纳更大值的数据类型,例如整数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.