使用计算器计算积分类型的MIN和MAX值的数学公式是什么。我知道你可以使用Integer.Max或Integer.Min等,或者在msdn上查找,但我想知道如何计算它。
答案 0 :(得分:12)
对于无符号类型:
因此,UInt32
:
Min value = 0
Max value = (2 ** 32) - 1
= 4294967296 - 1
= 4294967295
对于签名类型:
因此,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