C#中积分类型的最小值和最大值

时间:2010-05-06 09:26:49

标签: c# math types int32 integral

使用计算器计算积分类型的MIN和MAX值的数学公式是什么。我知道你可以使用Integer.Max或Integer.Min等,或者在msdn上查找,但我想知道如何计算它。

8 个答案:

答案 0 :(得分:12)

对于无符号类型:

  • 最小值= 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

答案 1 :(得分:3)

在此示例中,我使用的是32位有符号整数。 31位用于创建2 ^ 31种可能性的值。必须包含零,你必须减去一个。

2^31-1

当为负数时,不必包括零,因此您可以得到全范围。

-2^31

如果是无符号整数,则最大值为2^32-1,最小值为0

答案 2 :(得分:1)

您需要知道该类型的位数以及是否已签名。

例如,int在C#中是32位并且是有符号的。这意味着有31位代表数字(1位用于确定负数或正数)。所以你要计算2 31 并减去一个2147483647,(这是Integer.MaxValue返回的)。

类似于byte是8位且未签名,因此最大值为2 8 -1或255。

答案 3 :(得分:1)

你的问题答案的一个例子

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);

答案 4 :(得分:0)

整数变量的最小值/最大值是从使用的位数(通常为2的幂,即2位,4位,8位)导出的。 C#中的INT使用32位,因此可以具有4,294,967,295的MAX值 - 因为这是32位数据可以表示的最大值 - 无论如何,正如我所理解的那样。

答案 5 :(得分:0)

答案 6 :(得分:0)

如果您的计算器具有十进制到二进制的转换(十进制到十六进制也可以),请尝试转换Int32.MaxValue并查看您是否发现了该模式......

答案 7 :(得分:0)

我相信你会发现这很有用:
Integer (Computer Science) @ Wikipedia