使用计算器计算积分类型的最小值的数学公式是什么?我知道您可以使用integer.max或integer.min等,或在MSDN上查找它,但是我想知道如何计算它。

有帮助吗?

解决方案

对于未签名类型:

  • 最小值= 0
  • 最大值=(2 **(位数))-1

因此对于 UInt32:

Min value = 0

Max value = (2 ** 32) - 1
          = 4294967296 - 1
          = 4294967295

对于签名类型:

  • 最小值= 0-(2 **(位数-1))
  • 最大值=(2 **(位数-1)) - 1

因此对于 Int32:

Min value = 0 - (2 ** (32 - 1))
          = 0 - (2 ** 31)
          = 0 - 2147483648
          = -2147483648

Max value = (2 ** (32 - 1)) - 1
          = (2 ** 31) - 1
          = 2147483648 - 1
          = 2147483647

其他提示

在此示例中,我使用的是32bits签名的整数。 31位用于创建2^31可能性的值。由于必须包括零,因此您必须减去一个。

2^31-1

当负数时,不必包括零,因此您将获得完整的范围。

-2^31

如果一个未签名的整数,则最大是 2^32-1, 和最小 0.

您需要知道该类型有多少位以及是否签名。

例如,一个 int 在C#中为32位,已签名。这意味着有31位表示数字(1位用于确定负面或后期)。所以你会计算231 并减去一个是2147483647(这是Integer.maxValue返回)。

相似a byte 是8位,未签名,因此最大值为28 -1或255。

您的问题答案的一个示例

int签名:

Min=(1 << ((sizeof(int) * 8) - 1));
Max=~(1 << ((sizeof(int) * 8) - 1));

Min=~(int)((~((uint)0))>>1);
Max=(int)((~((uint)0))>>1);

int unsigned:

Min=0;
Max=~((uint)0);

整数变量的最小值是从使用的钻头数量(通常为2个,即2bits,4bits,8bits)的数量。 C#中的INT使用32位,因此,最大值为4,294,967,295-因为这是最大值32位数据可以代表的 - 无论如何我的理解也是如此。

如果您的计算器具有小数到二进制转换(DEC-HEX也可以工作),请尝试转换INT32.MAXVALUE,看看是否发现图案...

我相信您会发现这很有帮助:
整数(计算机科学) @ Wikipedia

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top