在Java中,short的范围是-128到127。为什么不是-127到127?考虑到一位用于存储数字的符号,负极限应该为-127,即2 ^ 6 + 2 ^ 5 + 2 ^ 4 + 2 ^ 3 + 2 ^ 2 + 2 ^ 1 + 2的总和^ 0?我在计算中缺少什么?
答案 0 :(得分:1)
我将假设您的意思是byte
而不是short
,因为short
的范围是-32768到32767。
似乎给人的印象是,对于整数类型(包括short
),负号用带符号的位表示,而其余数字则正常显示。因此-1
将表示为1000.0001
(为便于阅读而添加了点)。但是,这是不正确的。
实际上,-1
表示为1111.1111
,而1000.0000
实际上是-128
(而不是-0
,这种类型不存在)。这是为了使算术在所有值上保持一致。
答案 1 :(得分:1)
您正在使用8位将其存储在计算机的内存中。可以是0到255。考虑到您还需要负数,您必须更改查看这些数字的方式。
假设我们将第8位作为否定性的指标。负数将是正数的负数。这样我们可以显示从-127到127的数字,但是有两种显示0的方法:1111 1111和00000000。这被称为One's Complement。
由于工程师想利用所有可用空间,因此提出了一个新想法。为了将位置编号转换为负数(*-1),他们决定完全取反该编号并将其递增1。这将使他们有可能使用整个256范围。那就是两个人的补语。有128个负数+ 1个零+ 127个正数,即256个数字。
答案 2 :(得分:0)
您的计算是错误的。总数为2 ^ 8,等于256。从-128到127,因为我们将0视为这些数字之一。 128 + 128 =256。但是256 +'0'=257。因此必须从-128到127。