类型大小决定变量可存储取值数量这句话的含义是什么?
类型大小与变量取值范围的关联解释
所有数据在计算机中都以二进制比特(bit)为最小单位存储,1个比特仅能表示0和1两种状态。类型的大小通常以字节(Byte,1Byte=8bit)为单位计量,类型占用的比特数直接决定了可以组合出的不同二进制状态总数,每个状态对应一个独立的取值,这就是「类型的大小会决定变量可以存储的不同可能取值的数量」的核心含义。
我们可以用你提到的char类型做具体验证:
- C/C++标准明确规定
char类型的大小为1字节,也就是占8个比特,总共有2^8=256种不同的二进制组合,所以char类型最多能存256种不同的取值。 - 大部分编译器默认的
char是有符号类型,最高位会被作为符号位使用:0代表正数/零,1代表负数,剩余7位存储实际数值:- 非负数部分从
00000000(对应数值0)到01111111(对应数值127),共128个取值 - 负数部分采用补码规则存储,从
10000000(对应数值-128)到11111111(对应数值-1),共128个取值 - 两部分加起来刚好256种取值,对应你看到的取值范围
-128 ~ 127
- 非负数部分从
- 如果是
unsigned char(无符号char类型),所有8个比特都用来存储数值,没有符号位,取值范围就是0 ~ 255,总数量同样是256个。
这个逻辑可以推广到所有基础类型:比如常见的4字节(32比特)有符号int,总共有2^32=4294967296种不同取值,对应范围就是-2147483648 ~ 2147483647,完全符合上述规律。
内容的提问来源于stack exchange,提问作者Qurlarmah moses
相关产品推荐
相关产品推荐

