无符号数和有符号数(二) -- 反码、移码表示法

来源:互联网 发布:哔哩哔哩直播软件下载 编辑:程序博客网 时间:2024/05/16 18:36

一、反码表示:

整数:

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。

移码表示法:除了符号位与补码相反, 数值位都一样。