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

Ank*_*kit 4 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 的范围是如何计算的。它是在某个地方硬编码还是在这个范围内有更多的技术性?

任何建议,将不胜感激。

Jay*_*ini 8

让我们计算 1 个字节的范围

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


Lui*_*rno 6

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

第一位是符号。(1 - 负,0 - 正)


小智 5

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

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

对于 int 数据类型,n 是 32,简而言之,n 是 16 等。

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

通过使用相同的公式可以计算字节、短、浮点和双精度的范围。


ric*_*ich 0

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

-富有的