




已阅读5页,还剩156页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章运算方法和运算部件 早期的计算机是作为计算工具而应用于科学研究和军事领域的 对数据进行快速运算是促进计算机诞生和早期发展的动力 目前计算机的应用范围大大扩展了 但是数值在计算机中是如何表示的 怎样进行运算 如何实现运算仍是最最基本的问题 也是本章要讨论的课题 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 1数值的表示方法和转换 3 1 1数值型数据的表示和转换3 1 2十进制数的编码与运算 3 1 1数值型数据的表示和转换 进位计数制进位制 凡是用数字符号排列 按由低位到高位进位计数的方法叫做进位计数 简称进位制 进位制涉及的两个基本要素 基数位权 3 1 1数值型数据的表示和转换 基数一种进位制允许选用基本数字符号的个数叫做基数 位权每个数字符号所表示的数值等于该数字符号值乘以一个数码所在位有关的常数 这个常数叫做 位权 简称 权 位权的大小是以基数为底 数码所在位置的序号为指数的整数次幂 3 1 1数值型数据的表示和转换 十进制每位的值等于该位的权与该位数码的乘积 一个十进制可以写成按权展开的多项式和的形式 例如 789 23 7 102 8 101 9 100 2 10 1 3 10 2 3 1 1数值型数据的表示和转换 例 写出 1101 01 2 237 8 10D 16的十进制数 1101 01 2 1 23 1 22 0 21 1 20 0 2 1 1 2 2 8 4 1 0 25 13 25 237 8 2 82 3 81 7 80 128 24 7 159 10D 16 1 162 13 160 256 13 269 3 1 1数值型数据的表示和转换 二进制数 八进制数 十六进制数和十进制数之间的关系见表 3 1 1数值型数据的表示和转换 不同数制间的数据转换二进制数 八进制数和十六进制数之间的转换二进制数转换成十进制数十进制数转换成二进制数十进制数转换成八进制数 3 1 1数值型数据的表示和转换 二进制数 八进制数和十六进制数之间的转换二进制的不足之处 在绝大多数情况下比同等数值的十进制数占用更多的位数 二进制转换成八进制时 以小数点为分界线 整数部分从低位到高位 小数部分从高位到低位 每3位二进制为一组 不足三位的 小数部分在低位补0 整数部分在高位补0 然后用1位八进制的数字来表示 二进制与十六进制之间的转换方法类似二进制与八进制之间的转换方法 每4位二进制为一组 八进制数与十六进制数之间的转换 可将二进制数作为中间媒介进行转换 3 1 1数值型数据的表示和转换 例 1101 0101 2 001101 010100 2 15 24 8 11101 0101 2 00011101 0101 2 1D 5 16 15 24 8 001101 010100 2 1101 0101 2 3 1 1数值型数据的表示和转换 二进制数转换成十进制数利用数制公式计算 十进制数转换成二进制数整数转换方法 除基取余法小数转换方法 乘基取整法 3 1 1数值型数据的表示和转换 整数转换方法 除基取余法例 把十进制数205转换成二进制数 换算结果 205 10 11001101 2 3 1 1数值型数据的表示和转换 小数转换方法 乘基取整法例 把十进制小数0 8125转换成二进制数 换算结果 0 8125 10 0 1101 2 3 1 1数值型数据的表示和转换 注 并不是所有的十进制小数都能转换成有限位二进制小数并出现乘积的小数部分为0的情况 有时整个换算过程无限进行下去 例 0 2 此时可以根据精度要求并考虑计算机字长位数取一定长度的位数后四舍五入 这样得到的二进制数是原十进制数的近似值 当一个数既有整数部分又有小数部分时 分别进行转换后再进行拼接 3 1 1数值型数据的表示和转换 十进制数转换成八进制数参照十进制数转换成二进制数的方法 将基数2改为8 即可实现转换 3 1 1数值型数据的表示和转换 数据符号的表示数据的数值通常以正 负 号后跟绝对值来表示 称之为 真值 在计算机中正负号也需要数字化 一般用0表示正号 1表示负号 正号有时可省略 3 1数值的表示方法和转换 3 1 1数值型数据的表示和转换3 1 2十进制数的编码与运算 3 1 2十进制数的编码与运算 十进制数位的编码与运算 在计算机中采用4位二进制码对每个十进制数位进行编码 有权码无权码数字串在计算机内的表示与存储字符形式压缩的十进制数形式 3 1 2十进制数的编码与运算 有权码表示一位十进制数的二进制码的每一位有确定的权 一般用8421码 其4个二进制码的权从高到低分别为8 4 2和1 用0000 0001 1001分别表示0 1 9 每个数位内部满足二进制规则 而数位之间满足十进制规则 故称这种编码为 以二进制编码的十进制 binarycodeddecimal 简称BCD 码 3 1 2十进制数的编码与运算 8421BCD与十进制数的关系 有权码 3 1 2十进制数的编码与运算 8421码实现加 减运算时的修正规则 4位一组二进制数 两个8421码表示的数相加之和等于或小于1001 即十进制的9时 不需要修正 在各组内 二进制代码相加 仍遵循 逢二进一 的规则 4位一组二进制数 两个8421码相加结果大于1001 即十进制9 时 则应该对该组的4位进行 加6修正 使它向高一组产生进位 4位一组二进制数 两个8421码相加结果大于或等于10000 即十进制16 而向高一组进位时 则应该对该4位进行 加6修正 3 1 2十进制数的编码与运算 另外几种有权码 如2421 5211 4311码 也是用4位二进制码表示一个十进制数位 但4位二进制码之间不符合二进制规则 这几种有权码有一特点 即任何两个相加之和等于 9 10的二进制码互为反码 3 1 2十进制数的编码与运算 3 1 2十进制数的编码与运算 无权码表示一个十进制数位的二进制码的每一位没有确定的权 用得较多的是余3码 Excess 3Code 和格雷码 GrayCode 格雷码又称 循环码 余3码是在8421码基础上 把每个编码都加上0011而形成的 其运算规则是 当两个余3码相加不产生进位时 应从结果中减去0011 产生进位时 应将进位信号送入高位 本位加0011 3 1 2十进制数的编码与运算 数字串在计算机内的表示与存储字符形式 一个字节存放一个十进制数位或符号位 存放的是0 9十个数字和正负号的ASCII编码值 压缩的十进制数形式 一个字节存放两个十进制数位 既节省了存储空间 又便于完成十进制数的算术运算 其值用BCD码或ASCII码的低4位表示 符号位也占半个字节并放在最低数字位之后 其值可从4位二进制码中的6种冗余状态中选用 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 2带符号的二进制数据在计算机中的表示方法及加减法运算 机器数是指数在计算机中的表示形式 一般是采用某种编码形式表示带符号的二进制数 真值是指机器数所对应的实际数值 机器数有三种表示方式 原码补码反码 3 2带符号的二进制数据在计算机中的表示方法及加减法运算 3 2 1原码 补码 反码及其加减法运算3 2 2加减法运算的溢出处理3 2 3定点数和浮点数 3 2 1原码 补码 反码及其加减法运算 原码表示法规则 机器数的最高一位表示符号 0 表示正号 1 表示负号 后面各位用数的绝对值表示 3 2 1原码 补码 反码及其加减法运算 0的不唯一性 定点小数 0 原 0 0 0 0 原 1 0 0整数 0 原 00 0 0 原 10 0 3 2 1原码 补码 反码及其加减法运算 原码表示很直观 与真值转换很方便 进行乘除运算比较容易 但是原码进行加减运算时 符号位不能视同数值一样参加运算 原码的运算规则复杂 运算时间长 计算机大量的数据处理工作是加减运算 采用原码表示就很不方便了 3 2 1原码 补码 反码及其加减法运算 反码表示法一个负数的原码符号位不动 其余位取相反码就是机器数的另一种表示形式 反码表示法 正数的反码与原码相同 设 x 原 x0 x1x2 xn当x0 0时 x 反 x0 x1x2 xn当x0 1时 x 反 上节回顾 第2章计算机的逻辑部件2 3阵列逻辑电路2 3 2可编程序逻辑阵列 PLA 2 3 3可编程序阵列逻辑 PAL 第3章运算方法和运算部件3 1数值的表示方法和转换3 1 1数值型数据的表示和转换3 1 2十进制数的编码与运算3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 2 1原码 补码 反码及其加减法运算 3 2 1原码 补码 反码及其加减法运算 补码表示法设计补码表示法的目的是 使符号位能和有效数值部分一起参加数值运算 从而简化运算规则 节省运算时间 使减法运算转化成加法运算 从而进一步简化计算机中运算器的线路设计 计算机中补码的概念来源于数学上的 模 和补数 3 2 1原码 补码 反码及其加减法运算 一种较简单的由原码求得补码的方法 正数的补码表示与原码一样 x 补 x 原负数的补码是将原码符号位保持 1 之后 其余各位取相反的码 末位加1便得到补码 即 取原码的反码再加1 x 补 x 反 1例 已知x 1010B 求 x 补 x 反 1101B x 补 x 反 1 1110B 3 2 1原码 补码 反码及其加减法运算 真值 0和 0的补码表示是一致的 但在原码和反码表示中具有不同的形式 根据互补的概念 一个补码机器数再求一次补就得到机器数的原码了 3 2 1原码 补码 反码及其加减法运算 当补码加法运算的结果不超出机器范围时 可得出以下重要结论 用补码表示的两数进行加法运算 其结果仍为补码 X Y 补 X 补 Y 补 符号位与数值位一样参与运算 3 2 1原码 补码 反码及其加减法运算 原码 补码 反码比较 三种编码的最高位都是符号位 当真值为正时 三种编码的符号位都用0表示 数值部分与真值相同 即它们的表示方法是相同的 三种编码方法的区别主要在于对负数的表示方法有所不同 当真值为负时 三种编码的符号位都用1表示 但数值部分的表示各不相同 数值部分存在这样的关系 补码是原码的 求反加1 整数 或者 求反末位加1 小数 反码是原码的 每位求反 它们所能表示的数据范围 基本上是一样的 2n X 2n 整数 或 1 X 1 小数 只是补码多表示一个数 2n 整数 或 1 小数 3 2带符号的二进制数据在计算机中的表示方法及加减法运算 3 2 1原码 补码 反码及其加减法运算3 2 2加减法运算的溢出处理3 2 3定点数和浮点数 3 2 2加减法运算的溢出处理 当运算结果超出机器数所能表示的范围时 机器无法表达 称作 溢出 此时机器将停止运算 屏幕显示溢出警告 溢出判断规则与判断方法 单符号位操作检测方法变形码操作检测方法 3 2 2加减法运算的溢出处理 单符号位操作检测方法当操作数中的加数与被加数符号相同时 若运算结果的符号与操作数的符号不一致 表示溢出 否则 表示没有溢出 而当加数和被加数符号不同时 相加运算的结果是绝对不会溢出的 3 2 2加减法运算的溢出处理 例 x 0 1001 y 0 1110 用补码运算判断x y是否溢出 解 x 补 0 1001 y 补 0 1110两个正数相加的结果符号位为1 表示相加后有溢出 3 2 2加减法运算的溢出处理 变形码操作检测方法 每个操作数在运算时都采用两个符号位 正数用00表示 负数用11表示 两个符号位与码值位一起参加运算 若运算结果的两个符号位的代码不一致时表示溢出 两个符号位的代码一致时 表示没有溢出 3 2 2加减法运算的溢出处理 正溢出 若两个符号位代码为01 表示正溢出 表明运算结果是大于允许取值范围的正数 负溢出 若两个符号位为10 表示负溢出 表明运算结果是负数 其绝对值大于允许取值范围 注 最高符号位永远表示结果的正确符号 3 2 2加减法运算的溢出处理 例 x 0 1011 y 0 1100 用补码运算判断x y是否溢出 解 x 补 11 0101 y 补 11 0100符号位的代码是10 两个符号位的代码不一致 表示运算结果溢出 3 2 2加减法运算的溢出处理 例 x 0 1011 y 0 1101 用补码运算判断x y是否溢出 解 x 补 00 1011 y 补 00 1101符号位的代码是01 两个符号位的代码不一致 表示运算结果溢出 3 2带符号的二进制数据在计算机中的表示方法及加减法运算 3 2 1原码 补码 反码及其加减法运算3 2 2加减法运算的溢出处理3 2 3定点数和浮点数 3 2 3定点数和浮点数 定点数 定点数表示法 约定所有机器数的小数点隐含在某一个固定位置上 当约定所有机器数的小数点位置在机器数的最低位之后时 称定点整数 定点整数是纯整数 当约定所以机器数的小数点位置在符号位之后 有效数值部分最高位之前时 称之为定点小数 定点小数是纯小数 3 2 3定点数和浮点数 无论定点整数还是定点小数 都可以有原码 反码 补码的形式 定点数表示方法简单直观 不过定点数表示数的范围小 不易选择合适的比例因子 运算过程容易产生溢出 3 2 3定点数和浮点数 浮点数 浮点数表示法 小数点位置可以任意浮动 科学计数法 58600D 10 5 0 586586D 10 3 0 5860 0586D 10 1 0 586浮点数 1011101B 2 7 0 1011101101 1101B 2 3 0 10111010 01011101B 2 1 0 1011101 3 2 3定点数和浮点数 计算机多数情况下采用浮点数表示数值 它与科学计算法相似 把任意一个二进制数通过移动小数点位置表示成阶码和尾数两部分 N M REN为浮点数 M mantissa 为尾数 E exponent 为阶码 R radix 称为 阶的基数 底 而且R为一常数 一般为2 8或16 3 2 3定点数和浮点数 浮点数的机内表示一般采用以下形式 MS是尾数的符号位 设置在最高位上 E为阶码 有n 1位 一般为整数 其中有一位符号位 设置在E的最高位上 用来表示正阶或负阶 M为尾数 有m位 由MS和M组成一个定点小数 MS 0 表示正号 MS 1 表示负号 尾数的位数决定了数N的精度 尾数的位数越长 能表达的精度越高 3 2 3定点数和浮点数 规格化浮点数所谓浮点数的规格化 就是通过移动尾数 使尾数M的最高位数字M1 1 即M满足1 2 M 1时 这个浮点数就是规格化的数 否则就不是 在字长一定的情况下 规格化的浮点数精度最高 若M1 1 且尾数不是全0时就要移动尾数直到M1 1 阶码相应变化 保证N值不变 3 2 3定点数和浮点数 计算机中数据的数值范围和精度数值范围是指机器所能表示的一个数的最大值和最小值之间的范围 数据精度是指一个数的有效位数 例如 32位定点小数 补码 的范围为 1 1 2 31 定点整数 补码 的范围是 231 231 1 数据精度为31位 浮点数由于阶码的存在而扩大了数据的范围 例如 标准的32位单精度数 其数值的可表示范围为 2127 1 2 23 2127 精度为24位 因此用于科学计算的计算机一般都有浮点处理器 3 2 3定点数和浮点数 定点数表示法和浮点数表示法的比较浮点数表示的范围比定点数大 因为运算过程中随时对中间结构的浮点数规格化 所以不易丢失有效数字 提高了运算精度 运算规则的复杂性不同溢出情况 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 3二进制乘法运算 实现乘除法运算大致有三种方案 采用软件实现乘除法运算 使用原有的运算器硬设备 运用基本运算指令编制实现乘 除法运算的子程序 在原有运算器的基础上增加一些硬件设备来实现乘 除法操作 设置专用的乘 除法器 使运算处理设备专用化 目的是加快运算速度 3 3二进制乘法运算 3 3 1定点数一位乘法3 3 2定点数二位乘法3 3 3阵列乘法器 3 3 1定点数一位乘法 定点原码一位乘法乘法规则 乘积的符号由两数符号位按位相加得到 而乘积的数值部分则是两个正数相乘之积 乘积符号的运算法则 同号相乘为正 异号相乘为负 由于被乘数和乘数的符号组合只有四种情况 00 01 10 11 因此积的符号可按 异或 按位加 运算得到 3 3 1定点数一位乘法 假设 被乘数 X 原 X0X1X2 Xn乘数 Y 原 Y0Y1Y2 Yn则乘积 X Y 原 X 原 Y 原 X0 Y0 X1X2 Xn 1Y2 Yn 符号 表示把符号位和数值邻接起来 3 3 1定点数一位乘法 习惯方法 例 求x 0 1101和y 0 1011的乘积x y 3 3 1定点数一位乘法 运算规则 从乘数的最低位开始 用乘数y的每个二进制位去乘被乘数x 若y的某个二进制位为1 则得位积x 如为0 则得位积0 y的各位分别乘以x的所得的位积 因为位权不同 逐次向左移位 即在空间上按一定位数错开 这样逐位进行下去 直到乘数各位都乘完为止 把经过移位对准的各次位积相加起来即得结果 3 3 1定点数一位乘法 缺点 将多个数一次相加 机器难以实现 一般的加法器 只能把两个输入数相加 多个位积的同时输入是无法实现的 乘积位数增长了一倍 即2n 而机器字长只有n位 3 3 1定点数一位乘法 改进 把一次求和的操作 变成逐步累加求部分积的操作 将求积过程中逐位按权左移位积的操作 改为位积不动 而是上次部分积右移的操作 3 3 1定点数一位乘法 机器算法 例 求x 0 1101和y 0 1011的乘积x y 3 3 1定点数一位乘法 机器算法 若用zi表示第i次部分积 则z0 0z1 2 1 ynx z0 z2 2 1 yn 1x z1 zi 2 1 yn i 1x zi 1 zn 2 1 y1x zn 1 zn即为x和y的乘积 即x y zn 例 求x 0 1101和y 0 1011的乘积x y 3 3 1定点数一位乘法 实现原码一位乘法的逻辑电路框图 3 3 1定点数一位乘法 原码的主要问题是符号位不能参加运算 单独用一个异或门产生乘积的符号位 补码运算就可以实现符号位直接参加运算 补码一位乘法 校正法 P85 比较法 P87 3 3 1定点数一位乘法 补码与真值的转换 3 3 1定点数一位乘法 补码的右移正数右移一位 相当于乘1 2 负数用补码表示时 右移一位也相当于乘1 2 因此 在补码运算的机器中 一个数不论其正负 连同符号位向右移一位 符号位保持不变 就等于乘1 2 3 3 1定点数一位乘法 补码乘法规则设被乘数为 x 补 x0 x1x2 xn乘数为 y 补 y0 y1y2 yn均为任意符号则有补码乘法算式 校正法 当y 0时 y0 0 x y 补 x 补 y当y 0时 y0 1 x y 补 x 补 0 y1y2 yn x 补 例 x 0 1101 y 0 1011 校正法 即 x 补 11 0011 y 补 Y 0 1011 求 x y 补 例 x 0 1101 y 0 1011 校正法 即 x 补 11 0011 x 补 00 1101 y 补 11 0101 求 x y 补 3 3 1定点数一位乘法 补码乘法规则将补码乘法算式 校正法 当y 0时 y0 0 x y 补 x 补 y当y 0时 y0 1 x y 补 x 补 0 y1y2 yn x 补写成各项部分积累加的形式 P86 3 3 1定点数一位乘法 运算逻辑实现的递推关系 z0 补 0 z1 补 2 1 z0 补 yn 1 yn x 补 yn 1 0 z2 补 2 1 z1 补 yn yn 1 x 补 zn 补 2 1 zn 1 补 y2 y1 x 补 这种根据相邻两位比较结果决定运算操作的方法称为 比较法 也称Booth算法 3 3 1定点数一位乘法 实现这种补码乘法规则时 在乘数最末位yn后面要增加一位补充位yn 1 开始时yn 1 0 由ynyn 1判断第一步该怎么操作 然后再由yn 1yn判断第二步该怎么操作 因为每做一步都要右移一位 故做完第一步后 yn 1yn正好移到原来ynyn 1的位置上 依此类推 所以每步都用ynyn 1位置进行判断 故ynyn 1两位称为判断位 3 3 1定点数一位乘法 补码一位乘法的运算规则如果yn yn 1 即判断位是11或00 则yi 1 yi 0 部分积 zi 0 再右移一位 如果ynyn 1 10 则yi 1 yi 1 做减法 即做加 x 补操作 部分积 zi x 补 再右移一位 如果ynyn 1 01 则yi 1 yi 1 做加法 部分积 zi x 补 再右移一位 这样重复进行n 1步 但最后一步不移位 包括一位符号位 所得乘积为2n 1位 其中n为尾数位数 例 x 补 1 0101 y 补 1 0011 求 x y 补 3 3 1定点数一位乘法 3 3二进制乘法运算 3 3 1定点数一位乘法3 3 2定点数二位乘法3 3 3阵列乘法器 3 3 3阵列乘法器 硬件乘法器的常规设计是采用 串行移位 和 并行加法 相结合的方法 这种方法不需要很多器件 然而加法 移位的方法实在太慢 执行一次乘法的时间至少是执行一次加法时间的n倍 不能满足当前科学和工程对高速乘法提出的要求 自从大规模集成电路问世以来 高速的单元阵列乘法器应运而生 出现了各种形式的阵列乘法器 大大提高了计算速度 3 3 3阵列乘法器 3 3 3阵列乘法器 3 3 3阵列乘法器 阵列的每一行送入乘数Y的每一位数位 而各行错开形成的每一斜列则送入被乘数的每一数位 图中每一个方框包括一个与门和一位全加器 该方案所用加法器数量很多 但内部结构规则性强 适于用超大规模集成电路实现 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 4二进制除法运算 3 4 1定点除法运算3 4 2提高除法运算速度的方法举例阵列除法器 3 4 1定点除法运算 定点原码一位除法定点补码一位除法 加减交替法 3 4 1定点除法运算 定点原码一位除法设被除数 x 原 xf x1x2 xn除数 y 原 yf y1y2 yn商 q 原 qf q1q2 qn xf yf x1x2 xn y1y2 yn 余数 r 原 rf r1r2 rn则它们之间有如下关系 x 原 y 原 q 原 r 原符号处理qf xf yf 3 4 1定点除法运算 手算方法 3 4 1定点除法运算 特点 每次都是由心算来比较余数和除数的大小 余数大时 商1 余数小时 商0 第一次比较时 余数就是被除数 每做一次减法 总是保持余数不动 而除数向右移一位 商的符号单独处理 要求加法器的位数为除数位数的两倍 3 4 1定点除法运算 为适应机器运算 需要进行改进 用补码加代替直接减 两个符号位 除数右移改为余数左移 机器算法 在计算机中 小数点是固定的 不能简单地用手算的办法 为便于机器操作 除数y固定不动 即小数点固定 使被除数和余数进行左移 相当于乘2 效果与手算相同 比较法 3 4 1定点除法运算 3 4 1定点除法运算 注意 余数不是真正的余数 由于每次所得的余数多乘了2 求得小数点后的n位商后 相当于多乘了2n 故正确余数为2 nrn另外 在进行数值部分除法时 因为定点小数的绝对值小于1 若被除数绝对值 除数的绝对值 则商 1 因而会产生溢出 所以在执行除法以前 先要判断是否溢出 不溢出时才进行除法运算 否则除法就不进行 并由相应的程序进行处理 3 4 1定点除法运算 恢复余数法用余数减去除数求得差值 当差值大于0时 商上1 当差值小于0时 商上0 减去除数的运算 机器可用加上除数的补码机器负数的方式转换为加法运算 另外 当差值小于0时 商上 0 不够减 多减去了除数 还必须加上除数 重新恢复原来的余数 除数不动 使余数左移一位 3 4 1定点除法运算 这种方法的缺点是 当某一次 Y的差值为负时 要多一次 Y恢复余数的操作 降低了执行速度 又使控制线路变得复杂 因此在计算机中很少采用 计算机中普遍采用的是不恢复余数的除法方案 又称之为加减交替法 3 4 1定点除法运算 加减交替法加减交替法是对恢复余数除法的一种修正 原码加减交替法的规则是 当余数为正时 商上1 余数左移一位 减除数绝对值得新余数 当余数为负时 商上0 余数左移一位 加除数绝对值得新余数 若最后一次商为0 而又需得到正确余数 则在这最后一次仍需恢复余数 原码加减交替法 省去了恢复余数的加法过程 加快了除法速度 3 4 1定点除法运算 证明 当余数Ri为正时恢复余数法为 2Ri Y商为1加减交替法为 2Ri Y商为1当余数Ri为负时恢复余数法为 2 Ri Y Y商为0加减交替法为 2Ri Y商为0 3 4 1定点除法运算 说明 对定点小数除法 首先要比较除数和被除数的绝对值的大小 以检查是否出现商溢出的情况 判溢 被除数减去除数 若差为正 即最高位有进位输出表示溢出 商的符号为相除二数的符号的半加和 被除数的位数可以是除数的两倍 其低位的数值部分开始时放在商寄存器中 运算过程中 放被除数和商的寄存器同时移位 并将商寄存器中的最高位移到被乘数寄存器的最低位中 3 4 1定点除法运算 3 4 1定点除法运算 定点补码一位除法 加减交替法 算法规则 被除数与除数同号 被除数减去除数 被除数与除数异号 被除数加上除数 余数和除数同号 商1 余数左移一位 下次减除数 余数和除数异号 商0 余数左移一位 下次加除数 重复步骤 包括符号位在内 共做n 1步 例 x 0 1001y 0 1101求 x y 补 解 x 补 1 0111 y 补 0 1101 y 补 1 0011 3 4 1定点除法运算 商的校正 刚好能除尽时 如果除数为正 商不必校正 如果除数为负 则商加2 n 不能除尽时 如果商为正 则不必校正 如果商为负 则商加2 n 例 q 补 1 0100 0 0001 校正量 1 0101 r 补 1 1111 3 4 2提高除法运算速度的方法举例 跳0跳1除法除法运算通过乘法操作来实现 阵列除法器 阵列除法器适合于大规模集成电路的制造 与通常的除法器相比 阵列除法器不仅所需的控制线路较少 而且能够提供令人满意的高速运算 恢复余数阵列除法器不恢复余数阵列除法器 阵列除法器 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 5浮点的运算方法 浮点数的表示形式 以2为底 N M 2EM为浮点数的尾数 一般为绝对值小于1的规格化二进制小数 用原码或补码形式表示 E为浮点数的阶码 一般是用补码表示的整数 阶码的底除了2以外 还有用8或16表示的 3 5浮点的运算方法 3 5 1浮点数的加减法运算3 5 2浮点数的乘除法运算 3 5 1浮点数的加减法运算 设有两个浮点数X和Y 它们分别是 X Mx 2ExY My 2Ey其中Ex Ey分别为X Y的阶码 Mx My分别为X Y的尾数 两浮点数进行加减的运算规则是 X Y Mx2Ex My2Ey Mx2Ex Ey My 2Ey Ex Ey 3 5 1浮点数的加减法运算 两浮点数进行加减 首先要看两数的阶码是否相同 即小数点位置是否对齐 若两数的阶码相等 表示小数点是对齐的 就可进行尾数的相加减 反之 若两数阶码不等 表示小数点位置没有对齐 此时必须使两数的阶码相等 这个阶段称为对阶 对阶完后才能做两尾数的加减 运算结果可能不是规格化的数 为了保证运算精度 需要对运算结果进行规格化 而在对阶和规格化的过程中可能有数码丢掉 为了减小误差 还需要进行舍入 判断溢出 3 5 1浮点数的加减法运算 对阶 小阶向大阶看齐尾数求和 差 规格化舍入浮点数的溢出判断 3 5 1浮点数的加减法运算 对阶 小阶向大阶看齐对阶的第一步是求阶差 E Ex Ey若 E 0 表示两数阶码相等 即Ex Ey 不需要对阶 若 E 0 表明Ex Ey 若 E 0 表明Ex Ey 对于Ex Ey的情况 需要对阶 采用 小阶向大阶看齐 的方法 即小阶的尾数右移 E位 小阶的阶码增加 E与大阶相等 3 5 1浮点数的加减法运算 尾数求和 差 对阶完成后 就按定点加减运算求两数的尾数之和 规格化对于浮点数的原码表示法 其规格化数为 正数 00 1xx x 负数 11 1xx x对于浮点数的补码表示法 规格化数为 正数 00 1xx x 负数 11 0 xx x 3 5 1浮点数的加减法运算 补码规格化的条件是 若和或差的尾数两符号位相等且与尾数第一位不等 即00 1xx x或11 0 xx x 就是规格化的数 若和或差的尾数两符号位相等且与尾数第一位相等 则需向左规格化 即00 0 xx x或11 1xx x 需将和或差的尾数左移 每移一位 和或差的阶码减一 直至尾数第一位与尾符不等时为止 叫做向左规格化 若和或差的尾数两符号位不等 即01 xx x或10 xx x形式 表示尾数求和 差 结果绝对值大于 此时应该将和 差 的尾数右移1位 阶码加 即进行向右规格化 3 5 1浮点数的加减法运算 舍入在对阶或向右规格化时 尾数要向右移位 这样 右移的尾数的低位部分会被丢掉 从而造成一定误差 故应进行舍入处理 0舍1入 法 即右移时丢掉的最高位为0 则舍去 是1 则将尾数的末位加1 相当于进入 恒置1 法 即不管移掉的是0还是1 都把尾数的末位置1 3 5 1浮点数的加减法运算 浮点数的溢出判断表示成规格化数以后 由阶码进行判断是否溢出 设阶码数值部分取7位 符号位取2位 用补码表示 则能表示的范围是 最大阶码 E 补 001111111 127最小阶码 E 补 110000000 128 3 5 1浮点数的加减法运算 小于 128 称为下溢 发生在左规时 用机器0表示 阶码 尾数全0 例如 和的阶码 1100 0 左规一位时变成10 XXX X 大于 127时 称为上溢 这是浮点数的真正溢出置溢出标志 作中断处理 例如 当和的阶码 00111 1 而尾数还须右规时 会变成01000 0 3 5 1浮点数的加减法运算 总结 E 补 01XX X为上溢 真正溢出 需做溢出处理 E 补 10XX X为下溢 浮点数值趋于零 用机器零表示 3 5 1浮点数的加减法运算 例 X 2010 0 11011011 Y 2100 0 10101100 求X Y 解 计算过程 对阶 阶差 E EX 补 EY 补 00010 11100 11110X阶码小 MX右移2位 保留阶码E 00100 MX 补 000011011011下划线上的数是右移出去而保留的附加位 3 5 1浮点数的加减法运算 尾数求和 差 MX 补 MY 补 000011011011 1101010100 111000101011规格化左规 移1位 结果 110001010110 阶码 1 E 00100 1 00011 3 5 1浮点数的加减法运算 舍入附加位最高位为1 在所得结果的最低位 1 得新结果 M 补 1100010110 M 0 11101010 判溢出 阶码符号位为00 故不溢出 最终结果为 X Y 2011 0 11101010 3 5浮点的运算方法 3 5 1浮点数的加减法运算3 5 2浮点数的乘除法运算 3 5 2浮点数的乘除法运算 浮点乘法运算设有两个浮点数X和Y 它们分别是 X 2Ex MxY 2Ey My浮点数乘法运算的规则为 X Y 2 Ex Ey Mx My 即 乘积的阶码由两数阶码相加求得 乘积的尾数等于被乘数和乘数的尾数之积 3 5 2浮点数的乘除法运算 两个尾数的乘法可采用定点数乘方法 需要对浮点数尾数积进行规格化 左规 右规 舍入 0舍1入 若采用双倍字长乘积时 没有舍入问题 3 5 2浮点数的乘除法运算 例 已知x 0 110000 2101 y 0 111000 2100 设阶码数值部分各取5位 阶符2位 尾数数值部分各取6位 尾符2位 按机器浮点数运算步骤 求x y 解 求阶和 ex 补 0000101 ey 补 0000100 e 补 ex 补 ey 补 0001001 3 5 2浮点数的乘除法运算 尾数相乘可利用原码或补码定点数乘法求尾数之乘积 可得 Sx Sy 原 1 101010000000或 Sx Sy 补 1 010110000000规格化可看出 Sx Sy 原或 Sx Sy 补已是规格化形式 勿需规格化 3 5 2浮点数的乘除法运算 舍入若取单字长乘积 可得 Sx Sy 原 1 101010或 Sx Sy 补 1 010110 所以 x y 原 1 101010 20001001 x y 补 1 010110 20001001得x y 0 101010 21001 101010000判溢出阶码未溢出 故结果为正确 3 5 2浮点数的乘除法运算 浮点除法运算设有两个浮点数X和Y 它们分别是 X 2Ex MxY 2Ey My浮点数除法运算的规则为 X Y 2 Ex Ey Mx My 即 商的阶码由两数阶码相减求得 商的尾数由两数的尾数相除求得 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 6运算部件 定点运算部件定点运算部件由算术逻辑运算部件ALU 若干个寄存器 移位电路 计数器 门电路等组成 ALU部件主要完成加减法算术运算及逻辑运算 其中还应包含有快速进位电路 3 6运算部件 3 6运算部件 浮点运算部件通常由阶码运算部件和尾数运算部件组成 其各自的结构与定点运算部件相似 但阶码部分仅执行加减法运算 其尾数部分则执行加减乘除运算 左规时有时需要左移多位 第3章运算方法和运算部件 3 1数值的表示方法和转换3 2带符号的二进制数据在计算机中的表示方法及加减法运算3 3二进制乘法运算3 4二进制除法运算3 5浮点的运算方法3 6运算部件3 7数据校验码 3 7数据校验码 计算机系统中的数据 在读写 存取和传送的过程中可能产生错误 减少和避免这类错误的方法 一方面是精心设计各种电路 提高计算机硬件的可靠性 另一方面是在数据编码上找出路 即采用某种编码法 通过少量的附加电路 使之能发现某些错误 甚至能确定出错位置 进而实现自动改错的能力 3 7数据校验码 数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法 它的实现原理 是加进一些冗余码 使合法数据编码出现某些错误时 就成为非法编码 这样 就可以通过检测编码的合法性来达到发现错误的目的 合理地安排非法编码数量和编码规则 就可以提高发现错误的能力 或自动改正错误的目的 3 7数据校验码 3 7 1奇偶校验码3 7 2海明校验码3 7 3循环冗余校验 CRC 码 3 7 1奇偶校验码 奇偶校验码是一种开销最小 能发现数据代码中一位出错情况的编码 常用于存储器读写检查 或ASCII字符传送过程中的检查 它是在被传送的n位信息组上 加上一个二进制位作为校验位 使配置后的n 1位二进制代码中1的个数为奇数 奇校验 或偶数 偶校验 3 7 1奇偶校验码 例 数据奇校验编码偶校验编码000000001000000000000000000101010000101010010101010001111111001111111101111111其中 最高位为校验位 其余低八位为数据位 这种方案只能发现一位错或奇数个位错 但不能确定是哪一位错 也不能发现偶数个位错 3 7 1奇偶校验码 3 7数据校验码 3 7 1奇偶校验码3 7 2海明校验码3 7 3循环冗余校验 CRC 码 3 7 2海明校验码 这是由RichardHamming于1950年提出的 目前还被广泛采用 实现原理 是在数据中加入几个校验位 并把数据的每一个二进制位分配在几个奇偶校验组中 当某一位出错后 就会引起有关的几个校验组的值发生变化 这不但可以发现出错 还能指出是哪一位出错 为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》能力提升打印大全及答案详解【全优】
- 植物的果实 教学设计-2024-2025学年科学三年级下册青岛版
- 六年级英语上册 Module 5 Unit 1 Can you be my Chinese pen friend说课稿 外研版(三起)
- 曲靖木长廊工程方案(3篇)
- 青岛生物工程方案(3篇)
- 桥梁方案工程师(3篇)
- 旅馆空调工程招标方案(3篇)
- 光伏电站智能化运维2025年数据分析与应用报告
- 木屋亮化工程方案(3篇)
- 新能源行业品牌战略规划与市场推广策略研究报告
- 临床胸腔闭式引流护理-中华护理学会团体标准
- 电气自动化基础知识课件
- 铸铁机安装方案
- 甘肃省合理用药管理办法
- 软件升级与迭代更新协议说明
- 第十三章 三角形 单元测试 2025-2026学年人教版(2024)八年级数学上册
- (2025)学宪法讲宪法知识竞赛试题库及参考答案
- 女生的青春期健康教育
- 乡村医生法律法规知识
- 2025年广东省中考物理试题卷(含答案)
- 第一单元 写作《热爱写作学会观察》课件 学年统编版语文七年级上册
评论
0/150
提交评论