一、反码表示:
整数:
x 为真值, 正数的反码为符号位加x, 负数的反码为 符号位加 !x。
例如:x = +1101, 反码为:0,1101; x = -1101, 反码为:1,0010.
小数:
举例: x = + 0.1101, 反码为:0.1101; x = -0.1101, 反码为:1,0010.
对原码、补码、反码三种机器数表示总结:
1, 最高位为符号位, 书写上用“,” 或者 “.”将符号位和数值位隔开。
2, 对于正数, 原码 = 反码 = 补码。
3, 对于负数, 符号位为 1, 数值位如果是补码则取反加一, 如果是反码则取反就ok。
4, 三种方式中只有补码的0表示只有一种, 原码和反码中0的表示方式都不止一种方式。
5, 这三种方式都是机器数的表示方法, 也就是说都收到机器本身的字长影响。
二、移码表示:
为什么会引进移码表示呢?
补码在计算机运算里面运用到非常广泛, 因为它能将减法转换城加法, 由此可以简化运算;
但是补码很难直接判断大小, 如下:
可以看出 补码形式的负数是要大于正数的(在计算机里面“,”和“.”都不会存储的, 都是人为约定的)。
如果将x + 2^n,n 为数值位位数; 那么结果如下图
这样就很容易判断大小了。 这种方式称为移码表示法。
移码的定义:
注意上面这个式子, 它不像原码、反码、补码表示一样分是否为整数小数, 是否正负;
移码在计算机中一般是用在小数的阶码中, 基本上都是整数。 无论是正整数还是负整数, 移码的表示方法都是这个。
举例:
x = 10100, 它的移码为:2^5 + 10100 = 1,10100
x = -10100, 它的移码为:2^5 - 10100 = 0,01100
补码与移码的比较:
x = + 10100, 它的移码为:1,10100, 它的补码为:0,10100
x = - 10100, 它的移码为:0,01100, 它的补码为:1,01100
从上面的比较可以看出, 移码与补码就只有符号位相反, 也就是说只要加一个非门就可以进行移码与补码的转换。
移码的特点:
当 x = 0 时, x 的移码为:100000(假设机器字长为 5 位) 从这里可以看出移码和反码表示 0 都只有一种方式。
· 当 n = 5 时,最小的真值为 -2^5 , 即移码全部为 0 时。可见移码表示最小真值时移码全部为 0 。
用移码表示阶码时能方便的判断大小。
原码、补码、反码、移码 小结:
原码表示法就是带符号的绝对值表示法, 如果为正数:符号位,x; 如果为负数:符号位,x 的绝对值。
小数就是“,” 变成“.”。
补码表示法:如果为正数与原码一样, 如果为负数, 符号位,!x+1。
反码表示法:如果为正数与原码一样, 如果为负数,符号位,!x。
移码表示法:除了符号位与补码相反, 数值位都一样。