【计算机组成原理】定点数的表示和运算

定点数表示

  1. 无符号数和有符号数
    无符号数有符号数都是机器数
    1)无符号数
    指整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值
    若机器字长为8位,则数的表示范围为0~28-1,即0 ~255
    2)有符号数
    在机器中,数的“正”,“负”号是无法识别的,有符号数用“0”表示“正”号,用“1”表示“负"号,从而将符号也数值化,并通常约定二进制数的最高位为符号位,即将符号位放在有效数字的前面,组成有符号数。
    有符号数机器表示原码补码反码移码
    为了能正确区别真值和各种机器数,约定用X表示真值

[X] 表示原码
[X] 表示补码
[X] 表示反码
[X] 表示移码

  1. 机器数的定点表示
    根据小数点的位置是否固定,在计算机中有两种数据格式:
    定点表示浮点表示
    定点表示即约定机器数中的小数点位置是固定不变的,小数点不再使用“.”表示,而是约定它的位置。理论上,小数点位置固定在哪位都可以,但在计算机中通常采用两种简单的约定:
    将小数点的位置固定在数据的最高位之前,或固定在最低位之后。一般常称前者为定点小数,后者为定点整数

1)定点小数
定点小数是纯小数,约定小数点位置在符号位之后、有效数值部分最高位之前。若数据X的形式为X = x0 . x1……xn,(其中x0为符号位,x1——xn是数值的有效部分,也称尾数,x1为最高有效位),则在计算机中的表示形式如图所示(设机器字长n+1位)。

x0=0,x1——xn均为1时,x为其所能表示的最大正数,真值等于1 - 2-n.

x0=1,x1——xn均为1时,X为其(原码)所能表示的最小负数,真值等于2-n - 1
在这里插入图片描述
2)定点整数

定点整数是纯整数,约定小数点位置在有效数值部分最低位之后。若数据X的形式为X = x0x1……xn
(其中x0为符号位,x1——xn是尾数,xn为最低有效位),则在计算机中的表示形式如图所示:

x0 = 0, x1——xn均为1时,x为其所能表示的最大正数,真值等于2n-1

x0 = 1, x1——xn均为1时, X为其(原码)所能表示的最小负数,真值等于1 - 2n
在这里插入图片描述

  1. 原码,补码、反码、移码
    1)原码表示法
    原码是一种比较简单、直观的机器数表示法,用机器数的最高位表示该数的符号,其余的各位表示数的绝对值。原码的定义如下:
  • 纯小数的原码定义
    在这里插入图片描述
    如果字长为n+1,则原码小数的表示范围为:2-n-1 ≤ x ≤ 1-2-n
  • 纯整数原码定义
    在这里插入图片描述
    如果字长为n+1,则原码小数的表示范围为:1 - 2n ≤ x ≤ 2n - 1

2)补码表示法
加减法采用统一的加法操作

  • 纯小数的补码定义
    在这里插入图片描述
    如果字长为n+1,则原码小数的表示范围为:-1 ≤ x ≤ 1 - 2n
  • 纯整数的补码定义
    在这里插入图片描述
    如果字长为n+1,则原码小数的表示范围为:- 2n ≤ x ≤ 2n - 1

0补码、移码唯一,原码、反码不唯一

在这里插入图片描述

定点数的运算

  1. 定点数移位运算
    移位运算根据操作对象的不同分为算术移位逻辑移位
    有符号数的移位称为算术移位,逻辑移位的操作对象是逻辑代码,可视为无符号数。
    1)算术移位
    算术移位的对象是有符号数,在移位过程中符号位保持不变。
    对于正数,移位后出现的空位均以0添之。
    对于负数,由于原码、补码、反码的表示形式不同,因此当机器数移位时,对其空位的添补规则也不同。
    注意:不论是正数还是负数,移位后其符号位均不变,且移位后都相当于对真值补0,根据补码、反码的特性,所以在负数时填补代码有区别。
    对于原码,左移位若不产生溢出, 相当于乘以2(与十进制的左移一位相当于乘以10类似),右移一位, 若不考虑因移出而舍 去的末位尾数,相当于除以2。

正数的原码、补码与反码都相同,因此移位后出现的空位均以0添之。
对于负数,由于原码、补码和反码的表示形式不同,因此当机器数移位时,对其空位的添补规则也不同。

①负数的原码数值部分与真值相同,因此在移位时只要使符号位不变,其空位均添0.
②负数的反码各位除符号位外与负数的原码正好相反,因此移位后所添的代码应与原码相反,即全部添1。

③分析由原码得到补码的过程发现,当对其由低位向高位找到第一一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同。因此负数的补码左移时,因空位出现在低位,则添补的代码与原码相同,即添0;右移时因空位出现在高位,则添补的代码应与反码相同,即添1.

(2)逻辑移位

逻辑移位将操作数视为无符号数,移位规则:

逻辑左移时,高位移丢,低位添0;
逻辑右移时,低位移丢,高位添0。

注意:逻辑移位不管是左移还是右移, 都添0.

猜你喜欢

转载自blog.csdn.net/qq_43511405/article/details/107871535
今日推荐