无符号int、有符号int、无符号char、有符号char范围

计算机以二进制补码存储数值,当一个具有符号位的数据值储存在计算机中的时候,计算机会以最高位为符号位,其余位数取该数绝对值的二进制补码来储存。
有符号char范围:
有符号char最大值(正数):0111 1111即127,最小值1000 0000(补码) 即-128。
注1000 0000 -1=0111 1111 即2^7-1=128-1=127;
-128即- 2^7;
所以有符号char 取值范围[-128,127];当超过这个取值范围就会溢出。
这里写图片描述
这里写图片描述
我觉得可以形象的画一个图:
这里写图片描述
无符号char取值范围:
无符号最大值即1111 1111 即255,最小值为0;
注:10000 0000 - 1 = 1111 1111即2^8-1即256-1=255;
所以无符号char 取值范围[0,255]。
有符号无符号int取值范围
同理,有符号int 取值范围[- 2^31 , 2^31-1];
无符号int取值范围[ 0,2^32-1]。
这里写图片描述
注:32767没有达到有符号整型的范围。

猜你喜欢

转载自blog.csdn.net/sophia__yu/article/details/81143145