原码、反码、补码、移码 考点

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2022年9月2日 (五) 06:09的版本 (建立内容为“设机器字长为8,对于二进制编码1010 1100,如果它是某整数x的补码表示,则x的真值为(), 若它是某无符号整数y的机器码…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

设机器字长为8,对于二进制编码1010 1100,如果它是某整数x的补码表示,则x的真值为(),

若它是某无符号整数y的机器码,则y的真值为()。

A、84 B、-84 √ C、172 D、-172

A、52 B、84 C、172 √ D、204


解:

1010 1100是补码的话,计算它的真值的话,就要先知道它的原码的值,知道原码的值就要知道反码的值,

反码到原码是“正数保持不变、负数加1”,所以转回反码要么保持不变,要么减1,是保持不变还是减1取决于它的真值是个正数还是负数;

又知道原码到反码是“原码基础上,正数保持不变,负数符号位不变,其余位按位取反”,也就是说 原码到反码的过程中符号位是不变的,

那么根据“最高位为符号位,为0表示正数,为1表示负数”,补码 1010 1100 的真值是个 负数,因为是负数,所以转回反码要减1,就是后7位 010 1100 - 1 = 010 1011;

然后反码转原码:“符号位不变,其余位按位取反”就是 1101 0100,真值就是 -(26 + 24+22)=-(64+16+4)=-84


无符号整数y的话,全部是整数就是

1 0 1 0 1 1 0 0
27 26 25 24 23 22 21 20
128 32 8 4

128+32+8+4=160+12=172