如何计算原始数据类型的范围?

时间:2013-06-07 11:45:12

标签: java range primitive-types

根据docs.oracle.com: -

byte:字节数据类型是8位有符号二进制补码整数。它的最小值为-128,最大值为127(含)。字节数据类型可用于在大型阵列中保存内存,其中节省的内存实际上很重要。它们也可用于代替int,其限制有助于澄清您的代码;变量范围有限的事实可以作为一种文档形式。

字节 - 8位
 2 ^ 7 2 ^ 6 2 ^ 5 2 ^ 4 2 ^ 3 2 ^ 2 2 ^ 1 2 ^ 0

128 64 32 16 8 4 2 1)

添加所有这些数字,我们得到总共255个。那么如何计算-128到127的范围。它在某处是硬编码还是在这个范围内有更多的技术性?

任何建议都将不胜感激。

9 个答案:

答案 0 :(得分:5)

让我们计算1字节的范围

  1. 1位可以取0或1
  2. 1字节= 8位
  3. 第一位用作符号(-或+)
  4. 那么剩下的位是7
  5. 所以我们可以为一个符号写2 ^ 7 = 128个不同的数字
  6. 我们得到0作为正号。那么我们在负极端有128个数字,在正极端有127个数字,以及0(零)
  7. 因此范围为 -128至127,包括0

答案 1 :(得分:4)

它是一个带符号的类型,意思是它仍然具有255的范围(正如你已经正确计算的那样),但它从-128开始。因此,一半范围低于零,1个可能的数字=(零),其余127个高于0。

第一位是标志。 (1 - 减,0 - 加)

答案 2 :(得分:2)

这是因为第一位用于符号,因为数据类型已签名。

请参阅http://en.wikipedia.org/wiki/Signed_number_representations

由于Java中没有unsigned基元类型(如C或C#),如果需要“溢出”边界,通常会将其强制转换为更大的类型。

答案 3 :(得分:2)

范围计算公式为:-2 ^(n-1)到(2 ^(n-1)-1)

其中n =否。原始数据类型的位数。 例如:

对于int数据类型,n为32,简称数据类型,n为16等。

所以,int范围将是:-2 ^(32-1)到(2 ^(32-1)-1)

使用相同的公式可以计算byte,short,float和double的范围。

答案 4 :(得分:1)

最后一位,即数字8,我们正在写它2 ^ 7是一个符号位,决定负号或正号,因此它是2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4 +2 ^ 5 + 2 ^ 6

答案 5 :(得分:1)

用Java计算范围的公式
-2 (n-1)至+2 (n-1) -1
其中n是位数(1字节= 8位)

因此,对于字节类型范围将是: -2 (8-1)至+2 (8-1) -1
或,-2 (7)至+2 (7) -1
或者,-128到+127

答案 6 :(得分:0)

它是由签名值作为二进制数的标准表示形式产生的。有关完整说明,请参阅http://en.wikipedia.org/wiki/Two%27s_complement

-Rich

答案 7 :(得分:-1)

位由0和1组成。字节通常由8位组成。因此可以使用下面给出的通用公式计算值,

没有值数据类型可以具有= 2^n(2 power n),其中n表示没有位。 所以字节数据的值= 2^8(i.e 1 byte=8 bits),这里n=8 字节值= 256

它应该在零的两边共享相等(半值为负值,半值为正值)。因此字节的范围是-128到127.

答案 8 :(得分:-3)

数据类型范围  所以现在我们开始知道我们如何计算整数数据类型的范围。这个逻辑适用于所有整数数据类型。

下面给出了所有数据类型的完整细节,

S.NO数据类型位范围值

1布尔值1 - 真或假(1或0)

2字节8 -128到127. 256(2 ^ 8)

3短16 -32,768至32,767 65,536(2 ^ 16)

4 int 32 -2 ^ 31 to(2 ^ 31)-1 2 ^ 32

5 long 64参见注释2 ^ 64

6 float 32参见NOTE ---

7 double 64参见注释----

8 char 16 0到65,535 65,536(2 ^ 16)