在一个特定的计算机系统中,假如 unsigned int 类型需要占用 $2$ 个字节的存储空间(每个字节有 $8$ 位),则 unsigned int 可以表示的数据范围是( )
答案A。计算机存储的基本单位是Byte(字节),用大写B表示。1 Byte = 8 bits。
易错点:Byte(B)和bit(b)容易混淆。1 Byte = 8 bits。大写B是字节,小写b是位。
【考点】C++ 数据类型|二进制表示|无符号整数范围
🎯 考纲定位 本题考查 GESP 三级大纲中"C++ 数据类型与内存表示"模块。命题人卡住学生的是"unsigned 与 signed 范围混用"这个基础概念漏洞——很多孩子看到 int 就下意识想负数范围,完全忽略了 unsigned 的无符号特性。
🧠 解题思维 1. 2 字节=16 位,unsigned 意味着范围从 0 开始 2. 16 位二进制能表示的最大值是 2^16-1=65535(满额二进制 1111111111111111) 3. 最小值是 0(全 0) 4. 通法:n 位 unsigned 范围恒为 [0, 2^n-1],n 位 signed 范围恒为 [-2^(n-1), 2^(n-1)-1]
🪤 陷阱拆解 B 选项是典型的"多算 1 个"陷阱——学生常误以为 2^16 就是最大值,忘了二进制位全 1 实际等于 2^16-1;C 选项偷换概念,把 unsigned 当 signed 用;D 选项是 signed short 的 15 位范围,属于记忆混淆。命题人利用"满额计数容易多 1"的心理弱点。
🔄 反命题思维 若把 unsigned 改成 signed,直接选 C;若改成 4 字节 unsigned,范围是 0~4294967295;若问"能表示多少个值",答案是 2^16=65536(注意这是计数不是范围)。刷到此类题先问"有符号还是无符号",再问"几个字节",两步定生死。