char、short、int等整型类型取值范围
1. char 类型的取值范围
char类型的数据在内存中只占1个字节,即8bit,这8个bit在内存中存放的二进制的所有可能性如图
1.1 signed char
我们知道,整型数据在内存中存放的是补码,当我们以有符号数看待时,signed char的表示范围是[-128 ~127],二进制10 00 00 00无法计算,直接被定义成-128。图中数据表示在内存中存放的补码,经计算得到右边的十进制数字(原码)
当-1在加上1时,又变成了0,形成了一个循环,可以理解为图中的样子
所以signed char 的取值范围为[ -128~ 127]
1.2 unsigned char
当我们以有符号数看待时,最高位不再是符号位,而是有效位
当正数255在加1时,会进行隐形提升,高位补符号位0,计算结果如下图,得到结果后在存放在char类型的数据时,回发生截断,只保存末8位的 00000000,即0,又是一个循环
所以 unsigned char的表示范围为[ 0 ~ 255]
short、int、long、 long long、 float、double类型同理,不在详细介绍
2.short 类型的取值范围
- unsigned short [ 0 ~ 65535 ]
- signed short [ -32768 ~ 32767]
3. int 类型的取值范围
- unsigned int [0 ~ 4294967295]
- signed int [ -2147483648 ~ 2147483647]