unsigned int 0~4294967295
int 2147483648~2147483647
unsigned long 0~4294967295
long 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
Unsigned short和 short的取值范围的计算
答:short在计算机中是以16位二进制补码保存。因为整数的补码是其本身,所以unsigned short的最小值为00000000000000,而它的最大值表示为1111111111111111,即为2^16-1=65535。而short用补码表示的时候第一位用来表示符号位,1000000000000000和000000000000000都是表示的。(最前面的符号位1表示负数,0表示正数)
表示所以表示正数的时候范围从0000000000000000~0111111111111111,即[0,32767].当表示负数的时候,可以从1000000000000000表示到1111111111111111(此处为原码表示),即[-32767,-0],补码表示负数即将其原码除符号位以外的数值位取反+1.即-32767的补码为1000000000000001,但100000000000000000(-0)的补码为0000000000000000和0的补码一样。我们知道0的补码只有一个,任何一个原码在转变成补码时都不可能转变成10000000000000000,所以人们规定将1000000000000000编码成2^15=32768.