我不明白为什么一个字节可以接受的最低值是-128
。我可以看到最高的值是127
,因为它是二进制的01111111
,但是如何表示只有8位的-128
,其中一位用于符号?正128应该已经是8位了,也就是10000000
,然后你需要第9位来表示负号。
有人能帮我解释一下吗。
发布于 2010-09-02 02:42:16
正如James在他的评论中指出的那样,这是因为这就是2的补码的工作方式。
换句话说,你可以表示2^8 = 256种值。在本例中,它被用作128个负数、127个正数和0。如果我们使用7位来表示值,+1位来表示一个符号,我们可以少表示一个值,并且也会有两个零(这将是非常不幸的,因为比较两个值将会因为此而更加复杂)。
发布于 2016-07-15 04:17:09
基本数字类型可以表示2^n个数字。看一个case n=2。你可以表示四种情况,让我们称它们为a,b,c,d。然后你可以同意a=-2, b=-1, c=0, d=1
(这是可接受的方式)或a=-1, b=0, c=1, d=2
(可能,但不使用)。因此,如果你只有一个零,并且保持2^n个状态,那么增加n
的abs(min) != max
会移动边界,但abs(min) != max
仍然有效。
发布于 2016-09-01 19:20:48
字节由8位组成->1位符号(正或负)7位值
因此,范围-2^7负(-128 )到2^7 -1正(127)
https://stackoverflow.com/questions/3621067
复制相似问题