大学计算机组成原理 第2章 运算方法和运算器1.ppt_第1页
大学计算机组成原理 第2章 运算方法和运算器1.ppt_第2页
大学计算机组成原理 第2章 运算方法和运算器1.ppt_第3页
大学计算机组成原理 第2章 运算方法和运算器1.ppt_第4页
大学计算机组成原理 第2章 运算方法和运算器1.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章运算方法与运算器 第二章运算方法和运算器 重点 数据表示简介 运算方法和运算器补充 数字逻辑 数制 2 1数据与文字的表示方法 2 1 1数据格式2 1 2数的机器码表示2 1 3字符与字符串的表示方法2 1 4汉字的表示方法2 1 5校验码 2 1数据与文字的表示方法将解决的主要问题 计算机中数值数据非数值数据是如何表示 常用信息分类及表示 信息 数值数据 非数值数据 无符号数 有符号数 浮点数 定点数 十进制数 定点整数 定点小数 原码 补码 反码 移码 正整数 字符 汉字等 2 1 1数据格式 在选择计算机数据的表示方式时 需要考虑如下因素 要表示的数的类型 小数 整数 数值范围 一种数据类型所能表示的最大值和最小值 数值精确度 实数所能表示的有效数字位数 数值范围和数值精度均与使用多少位二进制位数以及编码方式有关 真值 正 负号加某进制数绝对值的形式称为真值 如 3 5等 即实际值 机器数 符号以及数值都数码化的数称为机器数如 X 01011Y 11011即真值在机器中的表示 称为机器数 一 数值数据的表示第一个要解决的问题 数值数据的符号如何表示 名词解释 真值和机器数 计算机中常用的数据表示格式有两种 一是定点格式 二是浮点格式 定点格式容许的数值范围有限 但要求的处理硬件比较简单 浮点格式容许的数值范围很大 但要求的处理硬件比较复杂 第二个问题 小数点如何表示 2 1 1数据格式 续1 1 定点数的表示方法定点表示 约定机器中所有数据的小数点位置是固定不变的 通常将数据表示成纯小数或纯整数 定点数x x0 x1x2 xn在定点机中表示如下 x0表示符号位 0代表正号 1代表负号 由于约定在固定的位置 小数点就不再使用记号 来表示 2 1 1数据格式 续2 纯小数的表示范围为 x0 x1x2 xn各位均为0时最小 各位均为1时最大 0 1 2 n 2 1 纯整数的表示范围0 2n 1 2 2 目前计算机中多采用定点纯整数表示 因此将定点数表示的运算简称为整数运算 如何用定点数来表示非常大 e g 2 10 33 的数和非常小 e g 9 10 28 的数 2 10 33 0 2 10349 10 28 0 9 10 27 引入比例因子1034和10 27 任意一个十进制数 可以写成 10E 计算机中一个任意进制数 可以写成 e mm 尾数 是一个纯小数 e 浮点的指数 是一个整数 R 基数 对于二进计数值的机器是一个常数 一般规定 为2 8或16 浮点数的表示方法 9 10 28 0 9 10 272 1033 0 2 1034 10E 十进制表示 尾数 用定点小数表示 给出有效数字的位数 决定了浮点数的表示精度 阶码 用定点整数形式表示 指明小数点在数据中的位置 决定了浮点数的表示范围 一个机器浮点数由阶码和尾数及其符号位组成 浮点数的标准格式 e m 为便于软件移植 使用IEEE 电气和电子工程师协会 标准IEEE754标准 阶码用移码 基为2 S 尾数符号 0正1负 M 尾数 纯小数表示 小数点放在尾数域的最前面 采用原码表示 E 阶码 采用 移码 表示 阶符采用隐含方式 即采用 移码 方法来表示正负指数 按照IEEE754的标准 32位浮点数和64位浮点数的标准格式为 0 e 127 126 254 1 E 127 0 1 E的最高位为0表示e为负 E的最高位为1表示e为正 有E e 127将 126 127变为正整数1 254 浮点数的规格化 例 156 78 15 678 101 1 5678 102 0 15678 103 RE M 对于二进制数1011 1101 0 10111101 2 4 10 111101 2 2 1 0111101 2 3 1 0111101 2 11 RE M 那么 计算机中究竟采用哪种数据形式 多种数据形式 二进制数 浮点数的规格化 规格化目的 为了提高数据的表示精度为了数据表示的唯一性尾数为R进制的规格化 绝对值大于或等于1 R 把不满足这一表示要求的尾数 变成满足这一要求的尾数的操作过程 叫作浮点数的规格化处理 通过尾数移位和修改阶码实现 在计算机内 其纯小数部分被称为浮点数的尾数 对非0值的浮点数 要求尾数的绝对值必须 1 2 即尾数域的最高有效位应为1 称满足这种表示要求的浮点数为规格化表示 0 1000101010 规格化处理 既然非0值浮点数的尾数数值最高位必定为1 则在保存浮点数到内存前 通过尾数左移 强行把该位去掉 用同样多的尾数位就能多存一位二进制数 有利于提高数据表示精度 称这种处理方案使用了隐藏位技术 0 1100010 1 100010 当然 在取回这样的浮点数到运算器执行运算时 必须先恢复该隐藏位 隐藏位技术 规格化浮点数的真值 x 1 s 1 2 127 e 127 一个规格化的32位浮点数 的真值为 32位浮点数格式 x 1 s 1 2 1023 e 1023 一个规格化的64位浮点数 的真值为 这里e是真值 是机器数 例 若浮点数x的二进制存储格式为 41360000 16 求其32位浮点数的十进制值 解 0100 0001 0011 0110 0000 0000 0000 0000数符 s 0阶码 E 1000 0010尾数 M 011 0110 0000 0000 0000 0000指数e E 127 10000010 01111111 00000011 3 10包括隐藏位1的尾数 1 M 1 01101100000000000000000 1 011011于是有x 1 s 1 M 2e 1 011011 23 1011 011 11 375 10 例 将十进制数20 59375转换成32位浮点数的二进制格式来存储 解 首先分别将整数和分数部分转换成二进制数 20 59375 10100 10011然后移动小数点 使其在第1 2位之间10100 10011 1 010010011 24e 4 e 127S 0 E 4 127 131 1000 0011 M 010010011最后得到32位浮点数的二进制存储格式为01000001101001001100000000000000 41A4C000 16 E 1 00000001 254 11111110 e 126 127表达的数据范围 绝对值 最小值 e 126 M 0 1 M 1 十进制表达 2 126 1 18 10 38最大值 e 127 M 11 1 23个1 1 M 1 11 1 23个1 2 2 23十进制表达 2 2 23 2127 2 2127 3 40 1038 32位单精度规格化浮点数 IEEE754标准 浮点数标准 IEEE754 非规格化数据 E 1 2046e 1022 1023表达的数据范围 绝对值 最小值 e 1022 M 0 1 M 1 十进制表达 2 1022 2 23 10 308最大值 e 1023 M 11 1 52个1 1 M 1 11 1 52个1 2 2 52十进制表达 2 2 52 21023 2 21023 1 79 10308 64位双精度规格化浮点数 IEEE754标准 2 1 1数据格式 续10 3 十进制数串的表示方法目前 大多数通用性较强的计算机都能直接处理十进制形式表示的数据 十进制数串在计算机内主要有两种表示形式 字符串形式字符串形式 一个字节存放一个十进制的数位或符号位 为了指明这样一个数 需要给出该数在主存中的起始地址和位数 串的长度 压缩的十进制数串形式压缩的十进制数串形式 一个字节存放两个十进制的数位 它比前一种形式节省存储空间 又便于直接完成十进制数的算术运算 是广泛采用的较为理想的方法 1 字符串形式每个十进制的数位或符号位都用一个字节存放 38 12 每个数位可用BCD码或ASCII码 用压缩的十进制数串表示一个数 要占用主存连续的多个字节 每个数位占用半个字节 4bits 其值可用二 十编码 BCD码 或数位的ASCII码的低4位表示 符号位也占半个字节并放在最低数字位之后 其值选用四位编码中的六种冗余状态中的有关值 如用12 C 表示正号用13 D 表示负号 在这种表示中 规定数位加符号位之和必须为偶数 当和不为偶数时 应在最高数字位之前补一个0 2 1 2数的机器码表示 在计算机中对数据进行运算操作时 符号位如何表示呢 是否也同数值位一道参加运算操作呢 把符号位和数字位一起编码来表示相应的数的各种表示方法 如原码 补码 反码 移码等 真值 机器数或机器码 若定点小数的原码形式为x0 x1x2 xn 共n 1位 则原码表示的定义是 式中 x 原是机器数 x是真值 1 原码表示法 1 定点小数 数的机器码表示 若定点整数的原码形式为x0 x1x2 xn 则原码表示的定义是 2 定点整数 例1 x 1001 则 x 原 01001x 1001 则 x 原 1 x 11001 例2 x 10110 10110 00000 对于0 原码机器中往往有 0 0 之分 故有两种形式 0 原 000 0 0 原 1000 0 x 原 10110 110110 0000010000 例3 x 1011总共用5位表示 n 4 x 原 01011x 1011 x 原 2n x 10000 1011 11011 原码小数的表示范围 最大值 1 2 n最小值 1 2 n 若原码小数的位数是8位时 其该数表示的最大值 最小值 8位 127 128 127 128 原码整数的表示范围 最大值 2n 1最小值 2n 1 若原码整数的位数是8位 其表示的最大值 最小值 8位 127 127 原码为符号位加上数的绝对值 0正1负 原码零有两个编码 0和 0编码不同 原码表示简单 易于同真值之间进行转换 原码乘除运算规则简单 原码加减运算复杂 这是因为 当两数相加时 同号相加 如果是异号相减 而在进行减法时还要比较绝对值的大小 然后大数减去小数 最后还要给结果选择符号 为了解决这些矛盾 人们找到了补码表示法 3 结论 2 补码表示法 1 模的概念 先以钟表对时为例说明补码的概念 假设现在的标准时间为4点正 而有一只表已经7点了 为了校准时间 可以将时针退7 4 3格 或者将时针向前拨12 3 9格 这两种方法都能对准到4点 由此可以看出 减3和加9是等价的 就是说9是 3 对12的补码 可以用数学公式表示 3 9 mod12 mod12的意思就是12模数 这个 模 表示被丢掉的数值 上式在数学上称为同余式 2 1 2数的机器码表示 续5 上例中其所以7 3和7 9 mod12 等价 原因就是表指针超过12时 将12自动丢掉 最后得到16 12 4 从这里可以得到一个启示 启示 负数用补码表示时 可以把减法转化为加法 这样 在计算机中实现起来就比较方便 计算机中运算器 寄存器 计数器都有一定的位数 不可能容纳无限大的任意数 当运算结果超出实际的最大表示范围 就会发生溢出 此时所产生的溢出量就是模 module 因此 可以把模定义为一个计量器的容量 如 一个4位的计数器 它的计数值为0 15 当计数器计满15之后再加1 这个计数器就发生溢出 其溢出量为16 也就是模等于16 定点小数的溢出量为2 即以2为模 一个字长为n 1位的定点整数的溢出量为2n 1 即以2n 1为模 模的概念 定义 任意一个数X的补码记为 x 补 x 补 X M ModM 当X 0时X M M自动丢失 x 补 X ModM 当X 0时X M M X M x 补 X M ModM 若定点整数的补码形式为x0 x1x2 xn 则补码表示的定义是 3 定点整数 例 x 0111 则 x 补 00111 x 0111 则 x 补 24 1 0111 100000 0111 11001 n 1位补码整数 2n 1 2nn 1位补码小数 1 2 n 1 若补码小数的位数是8位时 其该数表示的最大值 最小值 1 1 2 7即 1 127 128 若补码整数的位数是8位 其表示的最大值 最小值 128 127 补码的表数范围 补码最高一位为符号位 0正1负 补码零有唯一编码 补码能很好用于加减运算 4 特点 最高位参与演算 与其它位一样对待 例设x 1010 y 1010 求 x 补和 y 补 解 根据补码的编码方法 正数的补码与它的二进制表示相同 所以加上符号位0后得 x 补 01010 x 补 00001010负数的补码的编码方法1 将二进制代码前加0010102 再全部按位取反101013 然后在最低位上加110110 y 补 10110 正数的补码在其二进制代码前加上符号位0 负数的补码是将二进制代码前加0后 再全部按位取反 然后在最低位上加1 补码编码的简便方法 补码表示的数的真值 2 9公式的推导 例3 已知 x 补 010011011求x x 0 8 1 7 0 6 0 5 1 4 1 3 0 2 1 1 1 0 155 例4 已知 x 补 110011011求x x 1 8 1 7 0 6 0 5 1 4 1 3 0 2 1 1 1 0 256 155 101 1 定点小数定义 一般情况下 对于正数x 0 x1x2 xn 则有 x 反 0 x1x2 xn对于负数x 0 x1x2 xn 则有 3 反码表示法 所谓反码 就是二进制的各位数码0变为1 1变为0 例 x 0 10110 0 101100 0000 x 反 2 由反码求补码的公式 由反码与补码的定义 得 即 若要一个负数变补码 其方法是符号位置1 其余各位0变1 1变0 然后在最末位 2 n 上加1 0 10110 1 01001 0 00001 1111 3 定点整数定义 4 结论负数反码为符号位跟每位数的反 0正1负 反码零有两个编码 0和 0的编码不同 反码难以用于加减运算 反码的表数范围与原码相同 4 移码表示法 移码通常用于表示浮点数的阶码 假设定点整数移码形式为x0 x1x2 xn时 移码的定义是 1 移码定义 8位移码表示的机器数为数的真值在数轴上向右平移了128个位置 表示范围 00000000 11111111 例1 当正数x 10101时 x 移 25 10101 1 10101 例2 当负数x 10101时 x 移 25 25 10101 0 01011例3 0的移码是唯一的 即 0 移 0 移 100 00 注意 移码中符号位x0表示的规律与原码 补码 反码相反 1 正 0 负 在移码中 最高位为0表示负数 最高位为1表示正数 这与原码 补码 反码的符号位取值正好相反 移码为全0时所对应的真值最小 为全1时所对应的真值最大 因此 移码的大小直观地反映了真值的大小 这将有助于两个浮点数进行阶码大小比较 真值0在移码中的表示形式是唯一的 即 0 移 0 移 100 00 移码把真值映射到一个正数域 所以可将移码视为无符号数 直接按无符号数规则比较大小 同一数值的移码和补码除最高位相反外 其他各位相同 3 移码的特点 码制表示法小结 X 原 X 反 X 补用 0 表示正号 用 1 表示负号 X 移用 1 表示正号 用 0 表示负号 如果X为正数 则 X 原 X 反 X 补 如果X为0 则 X 补 X 移有唯一编码 X 原 X 反有两种编码 移码与补码的形式相同 只是符号位相反 数据四种机器表示法中 1 移码表示法主要用于表示浮点数的阶码 2 补码表示对加减法运算十分方便 因此目前机器中广泛采用补码表示法 3 在一些机器中 数用补码表示 补码存储 补码运算 在有些机器中 数用原码进行存储和传送 运算时改用补码 还有些机器在做加减法时用补码运算 在做乘除法时用原码运算 5 小结 无符号数的表示 不需要设置符号位 可以使用全部字长来表示数值大小例如 字长N 8时 取值范围 0 255 28 1 字长N 16时 取值范围 0 65535 216 1 同一代码的不同解释 一个代码 赋予不同类型 其数值不一样 例 计算机内一个二进制数10000001 若看作 无符号二进制数 其值为129 8421BCD码 其值为81 有符号整数 原码 1 反码 126 补码 127 有符号小数 原码 1 128 反码 126 128 补码 127 128 2 1 2数的机器码表示 例题 例6 以定点整数为例 用数轴形式说明原码 反码 补码表示范围和可能的数码组合情况 解 例7 将十进制真值 127 1 0 1 127 列表表示成二进制数及原码 反码 补码 移码值 解 2 1 2数的机器码表示 例题 例8 设机器字长16位 定点表示 尾数15位 数符1位 问 定点原码整数表示时 最大正数是多少 最小负数是多少 定点原码小数表示时 最大正数是多少 最小负数是多少 解 2 1 2数的机器码表示 例题 例9 假设由S E M三个域组成的一个32位二进制字所表示的非零规格化浮点数 真值表示为 1 s 1 M 2E 128问 它所表示的规格化的最大正数 最小正数 最大负数 最小负数是多少 解 例3之解 原码 反码 补码表示分别示于下图 与原码 反码不同 在补码表示中 0 只有一种形式 且用补码表示负数时范围可到 2n 例4之解 二进制真值 及其诸码值列于下表 其中0在 X 原 X 反中有两种表示 由表中数据可知 补码值与移码值差别仅在于符号位不同 例5之解 定点原码整数表示最大正数值 215 1 10 32767 10最小负数值 215 1 10 32767 10 定点原码小数表示最大正数值 1 2 15 10 0 111 11 2最小负数值 1 2 15 10 0 111 11 2 例6之解 最大正数 1 1 2 23 2127 最小正数 1 0 2 128 最小负数 1 1 2 23 2127 最大负数 1 0 2 128 2 1 3字符与字符串的表示方法 1 字符的表示方法现代计算机不仅处理数值领域的问题 而且处理大量非数值领域的问题 这样一来 必然要引入文字 字母以及某些专用符号 以便表示文字语言 逻辑语言等信息 2 1 3字符与字符串的表示方法 续1 目前国际上普遍采用的字符系统是七单位的ASC 码 美国国家信息交换标准字符码 它包括10个十进制数码 26个英文字母和一定数量的专用符号 如 等 共128个元素 因此二进制编码需7位 加一位偶校验位 共8位一个字节 表2 1列出了七单位的ASC 码字符编码表 表2 1ASCII字符编码表 0 3位 4 6位 ASCII码规定8个二进制位的最高一位为0 余下的7位可以给出128个编码 表示128个不同的字符 数字0 9的ASCII码的高3位编码是011 低4位是0000 1001 与它们的相应二进制代码相差一个常数 0110000 2或 060 8 当去掉高3位的值时 低4位正好是二进制形式的0 9 大小写英文字母的ASC 代码是递增按顺序排列的 小写英文字母的ASC 值大于大写字母的ASC 值 差值为 16 16 2 1 3字符与字符串的表示方法 续2 2 字符串字符串是指连续的一串字符 通常方式下 它们占用主存中连续的多个字节 每个字节存一个字符 当主存字由2个或4个字节组成时 在同一个主存字中 既可按从低位字节向高位字节的顺序存放字符串的内容 也可按从高位字节向低位字节的次序顺序存放字符串的内容 2 1 3字符与字符串的表示方法 续3 例 将字符串 IF A B THEN READ C 从高位字节到低位字节依次存在主存中 解 2 1 3字符与字符串的表示方法 续4 设主存单元长度由4个字节组成 每个字节中存放相应字符的ASC 值 文字表达式中的空格 在主存中也占一个字节的位置 因而每个字节分别存放十进制的73 49H 70 46H 32 20H 65 41H 62 66 32 84 72 69 78 32 82 69 65 68 40 67 41 32 主存各字节单元内容 字符和字符串的表示方法 73 49H 70 46H 32 20H 65 41H 62 66 32 84 72 69 78 32 82 69 65 68 40 67 41 32 2 1 4汉字的表示方法 1 汉字的输入编码输入编码方法主要有以下三类 数字编码 国标区位码 用数字串代表一个汉字输入 拼音码 是以汉字拼音为基础的输入方法 字形编码 是用汉字的形状来进行的编码把汉字的笔划部件用字母或数字进行编码 按笔划的顺序依次输入 就能表示一个汉字 例如五笔字形 将国家标准局公布的6763个两级汉字分为94个区 每个区分94位 实际上把汉字表示成二维数组 每个汉字在数组中的下标就是区位码 区码和位码各两位十进制数字 因此输入一个汉字需按键四次 数字编码输入的优点是无重码 且输入码与内部编码的转换比较方便 缺点是代码难以记忆 拼音码使用简单方便 但汉字同音字太多 输入重码率很高 同音字选择影响了输入速度 2 1 4汉字的表示方法 续1 为了加快输入速度 在上述方法基础上 发展了词组输入 联想输入等多种快速输入方法 但是都利用了键盘进行 手动 输入 理想的输入方式是利用语音或图像识别技术 自动 将拼音或文本输入到计算机内 使计算机能认识汉字 听懂汉语 并将其自动转换为机内代码表示 目前这种理想已经成为现实 汉字交换码是不同的汉字处理系统之间交换信息用的编码 汉字也是一种字符 1981年我国制定了 信息交换用汉字编码字符集基本集GB2312 80 国家标准 简称国标码 每个汉字的二进制编码用两个字节表示 共收录一级汉字3755个 二级汉字3008个 各种符号682个 共计7445个 2 汉字交换码 2 1 4汉字的表示方法 续2 3 汉字内码汉字内码是用于汉字信息的存储 检索等操作的机内代码 一般采用两个字节表示 有些系统中字节的最高位用于奇偶校验位 这种情况下用三个字节表示汉字 英文字符的机内代码是七位的ASC 码 当用一个字节表示时 最高位为 0 为了与英文字符能相互区别 汉字机内码中两个字节的最高位均规定为 1 汉字内码有多种方案 较常用的一种是以国标码为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论