原码、反码、补码、移码 考点
题1
设机器字长为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
题2
计算机中常用原码、反码、补码和移码表示数据,其中表示0时仅用一个编码的是()。
A、原码和反码
B、原码和补码
C、反码和移码
D、补码和移码 √
解:参见 ±0的表示
题3
在定点二进制运算中,减法运算一般通过()来实现。
A、补码运算的二进制减法器
B、原码运算的二进制减法器
C、原码运算的二进制加法器
D、补码运算的二进制加法器 √
题4
设机器字长为8个二进制位,对于十进制数-128,其补码表示为()。
A、1111 1111
B、1111 0000
C、1000 0000 √
D、1000 1000
解:人为规定,记住