← 2022 · 小米 笔试

推荐答案 测试一下

16bit有符号数0×C6的十进制数是()

A.-57 B.-56 C.-59 D.-58
单选题 中等 笔试真题单选

参考答案

正确答案是D.-58。 解析:本题考察有符号数的补码表示及进制转换。题目中给出的16bit有符号数0xC6实际上是一个简写,在16位宽度下,0xC6应被理解为16进制数,但其只有两个十六进制位,因此需要明确其实际位宽表示。通常,对于有符号数,如果给出的数值最高位为1(二进制11000110,最高位即第7位为1),则表示这是一个负数。在16位有符号数中,进行符号扩展后,0xC6对应的完整16位二进制为1111111111000110(即0xFFC6)。 补码转十进制的方法:对于负数,先求其补码的绝对值的补码。具体步骤:0xFFC6的补码形式,先取反得到0x0039(0000 0000 0011 1001),再加1得到0x003A(0000 0000 0011 1010),即十进制58,因此原数值为-58。另一种简便计算:0xC6即11000110,作为8位有符号数时,其值为-(256-198)=-58,扩展到16位后值不变。 易错点:1. 容易忽略有符号数的符号扩展,错误地将0xC6当作0x00C6(正数198)处理;2. 混淆补码与无符号数的转换,直接按无符号数计算得198;3. 在计算负数补码时,忘记取反加一的过程,或搞错符号。 选项验证:A.-57(对应0xC7)、B.-56(对应0xC8)、C.-59(对应0xC5)、D.-58(对应0xC6)。因此只有D正确。

涉及知识点

  • 有符号数的补码表示
  • 符号扩展规则
  • 十六进制转十进制(补码负数)
  • 补码求原码的取反加一方法
  • 有符号数与无符号数的区别
← 上一题
登录后反馈错题
下一题 →