本帖最后由 myic200610 于 2012-2-23 00:58 编辑
在C语言中:
char 类型数据数值范围是:-2^7~2^7-1,即-128~127;
unsigned char 类型数据数值范围是:0~2^8-1,即0~255;
signed int 类型数据数值范围是:-2^31~2^31-1,即-2147483648~2147483647;
unsigned int 类型数据数值范围是:0~2^32-1,即0~4294967295。
等等。
我的问题是:char 类型数据数值范围的最小值为什么是-2^7(-128),而不是-2^7-1(-129)或-2^7+1(-127)呢?
我的理解是这样的:
Char类型数据的范围用二进制表示为:
1 111 1111~0 111 1111
其中:
1 111 1111B=-127D;
0 111 1111B=127D;
因此,我觉得char 类型数据数值范围的最小值应该是-2^7+1(-127),对应的char 类型数据数值范围就应该是是:-2^7+1~2^7-1,即-127~127。
请高手指点,我的分析错误在哪里?
谢谢!
|