低 $4$ 位、高 $4$ 位压缩技术,适用于数据仅使用字节的一部分(如仅用低 $4$ 位)的场景。字节结构:一个字节为 $8$ 位,分为高 $4$ 位(高位)和低 $4$ 位(低位)。当数据是十六进制数($0$ 到 $15$,即 0x0 到 0xF),每个值仅需 $4$ 位表示,高 $4$ 位全为 $0$。将两个相邻的 $4$ 位值合并为一个字节。四个数据 0x1、0x2、0x3、0x4 采用上述压缩技术压缩以后是( )。
将选项中的各数统一为十进制后比较大小。十六进制转十进制方法:按权展开求和。正确答案是C。
关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。
【考点】十六进制表示|二进制位操作|数据打包
解题思维:每个4位值高4位全0,相邻两值合并为1字节。0x1(0001)与0x2(0010)组合为00010010→12H;0x3(0011)与0x4(0100)组合为00110100→34H。本质是低位对齐的位拼接。
陷阱拆解:A项"12D"混淆十六进制与十进制(D常作十进制标识);B项"Q"无意义;D项写成二进制虽正确但非题目要求的十六进制形式。最阴险的是将高4位误认为数据位,导致结果翻倍。
反命题思维:若将压缩后的字节拆回4位值,需右移4位取低4位;若输入为奇数个4位值,末尾需补0。刷到此类题先问"命题人想考我什么"——是位操作规则还是进制识别?