SlideShare a Scribd company logo
系 统 总 线 存储器  运算器  控制器  接口与通信  输入 / 输出设备 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email_address] 《 计算机组成原理 》 第六章 计算机的运算方法
学习目标: 1 、理解 进位计数制 ,掌握常用的进制之间的转换; 2 、理解 真值与机器数 的概念,了解 BCD 码 的概念; 3 、掌握 海明威和循环冗余校验码 的计算; 4 、掌握 定点数 的各种表示方法,包括无符号数的表示,有符号数的 原 码、反码、补码、移码 表示;掌握定点数的 移位运算 ;掌握定点数 的 加减乘除运算 ; 5 、掌握 浮点数 的表示方法,掌握浮点数的 加减乘除 运算原理及流程; 6 、了解 串行加法器 和 并行加法器 的原理;了解 算术逻辑单元 ALU 的功 能和结构。 重点难点; 1 、 定点数 的表示;定点数的 移位运算 ;定点数的 加减乘除运算 ; 2 、 浮点数 的表示; IEEE754 标准;浮点数的 加减运算 ; 3 、 海明威和循环冗余校验码 的原理及计算; 本章学习目标与重点
运算方法: 算术运算 和 逻辑运算 在 运算器 的实现方法。 实现的硬件部件 :  算术逻辑部件 ALU ,或称 运算器 。 由于逻辑运算实现比较简单,通过与或非门等逻辑部件实现, 所以我们主要研究学习计算机中 算术运算 以及 运算器 的逻辑结构。 运算方法 为什么要研究运算方法 ? 答: 1 )一个实际数,怎么用 机器数 表示? (原码、补码、反码等) 机器数具有特定的运算规律,和我们以往研究的算术运算不同。 2 )计算机特定的运算方法: 定点运算 、 浮点运算 。 3 )早期冯 . 诺依曼型运算器只设 加法器 、 寄存器 ,怎么实现加减乘除? 4 )采用什么样的 算法 与 运算器的结构 密切相关,两者的设计是相互 影响的。不同的算法决定运算器不同的结构。
运算器的基本结构 运算器功能: 完成 算术运算 和 逻辑运算 的部件。 设计考虑: 任意 算术运算(加减乘除)都可通过 相加 和 移位 来解决。 所以运算器的核心部件是 加法器 和 移位器 。 减法 可以通过加法来解决 12-7=5  (以 10 为模) 12+3 ( 7 的补码) =15 (去模) =5 123-78 (以 100 为模) 100-78=22 123+22=145 (去模) = 45 乘法 可以通过连续的加法来解决 除法 可以通过连续的减法来解决 系 统 总 线 存储器  运算器  控制器  接口与通信  输入 / 输出设备 运算部件 任何一个硬部件的基本结构一定和功能有关系!
运算器的基本结构:( P 283 ) 加法器 、 移位门 、 寄存器组 、 输入选择门 和 数据总线 组成。 问题 1 、 加法器: 没有记忆功能。 参与运算的数,运算的结果放那里? ( A+B ) + ( C+D ) 答: 存放在 寄存器组 (多个寄存器)中。 问题 2 、 加法器: 三输入两输出 (输入:两个数和低位进位) 一次只有两个数进行运算, 究竟让哪个寄存器参加工作呢? 答: 要进行 选择 (选择门)。 移位门 加法器 选择门  A 选择门  B 通用 寄存器组 数据总线 数据总线 运算器基本结构框图 运算部件
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
通常我们把一个 数(连同符号) 在机器中数值化后表示为 机器数 , 而把原来的数值称为机器数的 真值 。 一个 实际数 (如 +8.75 )通常由 数值 、 小数点 、 符号 、三部分组成。 因此,将一个实际数在计算机内部表示需要解决三个问题:   1 、符号的处理 ( + 8.57 )  2 、数值的处理 ( 8 . 75 )   3 、小数点的处理 ( 8 . 75 ) 1 、 数据的表示方式(从真值到机器数) 真值  +5  =  机器数  0101
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
真值: 计算机中用正负号和绝对值表示的数。 例如: +123 , -123 , +101011 , -10101011 机器数: 计算机中把 符号位 和 数值 数码化以后的数。 例如: +123 =  0  1111011  -123 =  1  1111011 + 1010110 =  0  1010110  -1010101 =  1  1010101   带符号的 n 位有效数,机器数为 n+1 位 . 通常符号处理有两种方法: 1 )一种是舍弃符号,采用无符号表示; 2 )一种是采用符号,并对符号加以处理。 如何处理符号呢?途径只有一条,即 符号数码化 。 “ 0 ”  表示  正 ,“ 1 ”  表示  负 。 1.1 、符号的处理(正数、负数)
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
1 )直接采用二进制数表示 如( 255 ) 10 = ( 11111111 ) 2 优点: 在计算机中,数码是由电平的高低来表示的; 通常高 电平代表“ 1” , 低电平代表“ 0” ; 所以采用二进制方便,容易实现。 缺点: 八个 1 表示 255 , 二进制表示数码的效率太低, 书写极其不方便。 1.2 、数值的处理(数制转换)
2 )引进组合二进制数:八、十六进制数 从最低有效位开始,三位一划分,组成 八进制  Q ; 从最低有效位开始,四位一划分,组成 十六进制  H 。 例如: 110101111001  二进制 110101111001  6571 Q  八进制 110101111001   D79 H  十六进制 注意: 这种引进,主要是 为了书写方便而已 , 在机器 内部表示是一样 的,不需要编码 译码 。 1.2 、数值的处理(数制转换)
1.2 、数值的处理(数制转换) 1 5 F 1 7 1 1 1 1 1 4 E 1 6 1 1 1 0 1 3 D 1 5 1 1 0 1 1 2 C 1 4 1 1 0 0 1 1 B 1 3 1 0 1 1 1 0 A 1 2 1 0 1 0 9 9 1 1 1 0 0 1 8 8 1 0 1 0 0 0 7 7 0 7 0 1 1 1 6 6 0 6 0 1 1 0 5 5 0 5 0 1 0 1 4 4 0 4 0 1 0 0 3 3 0 3 0 0 1 1 2 2 0 2 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 十进制数  D  十六进制数  H  八进制数  O/Q  二进制数  B
二进制数、八进制数、十六进制之间的转换 对于一个兼有整数和小数部分的数,以小数点为界, 不足的位数补 0 。 对整数部分将 0 补在数的左侧,对小数部分将 0 补在数的右侧。 例: 从二进制数转换到八进制数,则以 3 位为 1 组 ( 1   101 . 010   1 ) 2 =( 001   101 . 010   100 ) 2 =(15.24) 8 例: 从二进制数转换到十六进制数,则以 4 位为 1 组 。  ( 1   1101 . 0101 ) 2 =( 0001   1101 . 0101 ) 2 =(1D.5) 16 从八进制数 / 十六进制数转换到二进制数,顺序将每一位数写成 3/4 位。 例:  (15.24) 8 =( 00 1   101 . 010   1 00 ) 2 =(1101.0101) 2 八进制数与十六进制数之间,可将二进制数作为中间媒介进行转换。 1.2 、数值的处理(数制转换)
3 )  BCD 码(十进制): 如果计算机以二进制进行运算和处理时,只要在输入输出处理时进 行二  /  十进制转换即可。 但在商业统计中, 二  /  十进制转换存在两个问题 : ( 1 )转换占用实际运算很大的时间; ( 2 )十进制的 0.1 ,无法用二进制表示; 且十进制数 0.1+0.1=0.2 ,在二进制中无法得到确切的数值, 这里有个小误差。 商用计算机设计有专门用于十进制计算电路,这时的十进制数一般采用 BCD 码 。 1.2 、数值的处理(数制转换)
例: 将 (105) 10 转换成二进制。 2 105   余数 结果   2 52 1 最低位   2 26 0   2 13 0 …   2 6 1   2 3 0   2 1 1   0 1 最高位 得出: ( 105 ) 10  = ( 1101001 ) 2 十进制数转换成二进制数 : 对一个数的 整数部分和小数部分 分别进行处理,合并各自得出结果。 整数部分: 采用 除 2 取余数 法。 直到商等于 0 为止 1.2 、数值的处理(数制转换)
直到乘积的小数部分为 0 , 或结果已满足所需精度要求为止 十进制数转换成二进制数 : 对一个数的 整数部分和小数部分 分别进行处理,合并各自得出结果。 小数部分: 采用 乘 2 取整数 法。 例: 将 (0.3125) 10 转换成二进制数  (  要求 4 位有效位 )  。 结果  0.3125×2 最高位  0  .6250×2 …  1  .2500×2   0  .5000×2 最低位  1  . 0000 得出 : ( 0.3125 ) 10  = ( 0.0101 ) 2 1.2 、数值的处理(数制转换)
十进制数转换成二进制数 : 对一个数的 整数部分和小数部分 分别进行处理,合并各自得出结果。 例: 将 (105.3125) 10 转换成二进制数  (  要求 4 位有效位 )  。 前面计算得出: ( 105 ) 10  = (  1101001  ) 2 前面计算得出 : ( 0.3125 ) 10  = ( 0. 0101  ) 2 得出:  ( 105.3125 ) 10  = (  1101001 . 0101  ) 2 1.2 、数值的处理(数制转换)
直到乘积的小数部分为 0 , 或结果已满足所需精度要求为止 . 例: 将 (0. 1) 10 转换成二进制数  (  要求 5 位有效位 )  。 结果  0.1×2 最高位  0  .2×2 …  0  .4×2   0  .8×2   1  .6×2   1  .2×2   0  .4×2   0  .8×2 最低位  1  .6 000 得出 : ( 0.1 ) 10  = ( 0.00011 ) 2 可能永远乘不完,小数部分不为 0 , 意味存在一点误差。 1.2 、数值的处理(数制转换)
由于 ASCII 码低四位与 BCD 码相同,转换方便。 ASCII 码左移四位得 BCD 码,  BCD 码前加 0011 得 ASCII 码。 一般在二进制的计算机中一般不采用 BCD 码,矫正不方便。 在 商用计算机 中,专门设置有十进制电路,采用 BCD 码。 十进制 BCD 码   二进制数   十六进制数  ASCII 码   0   0000   0000 0 0011 0000 1   0001   0001 1 0011 0001 ……  ……    ……    ……  …… 9   1001   1001 9 0011 1001 10   0001 0000   1010 A 16  0001 0110   1111 F 从键盘输入输出的是 ASCII 码( P214 ) 1.2 、数值的处理(数制转换)
BCD 码算术运算,要对运算结果进行 修正 。 加法运算的修正规则是: 两个一位 BCD 码相加之和小于或等于 (1001) 2 , 即 (9) 10, 不修正; 相加之和大于或等于 (10) 10 ,要 加 6 修正 ,并向高位进位。 4+9=13 0 1 0 0 + 1 0 0 1 1 1 0 1 + 0 1 1 0   修正 1  0 0 1 1 进位 1+8=9 0 0 0 1 + 1 0 0 0 1 0 0 1 不需要修正 9+7=16 1 0 0 1 + 0 1 1 1 1   0 0 0 0 + 0 1 1 0   修正 1  0 1 1 0 进位 1.2 、数值的处理(数制转换)
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
小数点可否数码化? 如  10110011  ,你能鉴别哪一位数码表示小数点吗? 答案: 不能!无法与数位相区别。 1.3 、小数点的处理(定点、浮点) 定点数 :  小数点固定在某个位置上的数据。 定点小数 : 小数点固定在数值部分的左边,符号位的右边。 定点整数 : 小数点固定在数值部分的右边。 定点数的表示范围是有限的,但硬件的设计比较简单。 浮点数 :   指小数点位置可浮动的数据。
1 、定点数的表示方法: 例如: 123.45 =  0 . 12345 X 10  3   纯小数   123.45 =  12345 X 10  -2   纯整数 假设用一个 n+1 位表示定点数  X =  X 0  X 1 X 2 …X n , X 0 : 表示符号(放在最左位置,“ 0” 正号  / “1” 负号), X 1 X 2 …X n : 其余位数代表数值。 对于任意一个定点数,在定点计算机中数的表示格式如下: X 0   X 1 X 2  …  X n 尾数(数值) 符号 1.3 、小数点的处理(定点、浮点)
定点小数 :  小数点位于在  X 0  和  X 1  之间,表示纯小数。 数值范围:  当 X 1 X 2 …X n 各位是 0 时: 0 .0000000 , |X| 最小 =0   当 X 1 X 2 …X n 各位是 1 时: 0 .1111111 , |X| 最大 =1-2 -n 0≤ |X|≤1-2 -n X 0   X 1 X 2   …  X n 尾数(数值) 符号 小数点的这个点在计算机中是 隐含约定 的,不出现的。 1.3 、小数点的处理(定点、浮点)
定点整数 :  小数点位于最低位的右边。 数值范围: 当 X 1 X 2 …X n 各位是 0 时: 0  0000000 , |X| 最小 =0   当 X 1 X 2 …X n 各位是 1 时: 0 1111111 , |X| 最大 =2 n+1 -1 0≤X≤2 n+1 -1 X 0   X 1 X 2   …  X n 尾数(数值) 符号 1.3 、小数点的处理(定点、浮点)
定点小数数值表示: X = X 0  X 1 X 2 …X n   X 0 =0,X i ={0,1}, 0≤i≤n    X 1 2 -1  + … + X n-1 2 -n+1  + X n 2 -n 例如:   X   = 0.10101  其数值  = 2 -1 +2 -3 +2 -5  = 21/32 定点整数数值表示: X = X 0  X 1 X 2 …X n X i ={0,1}, 0≤i≤n X 0 2 n  + X 1 2 n-1  + … + X n-1 2 1  + X n 例如 :  X = 010101  其数值  = 2 4 +2 2 +2 0  = 21 1.3 、小数点的处理(定点、浮点)
阶码 浮点数 机器格式: 尾数 阶符 数符 浮点数: 小数点的位置根据需要而浮动。 N = S × r j   r :基数 ,通常 r = 2 。 j :阶码 ,常为 纯整数 ,用移码或补码表示。 S :尾数 ,常为 纯小数 ,用原码或补码表示。 j 和 S 都是 带符号的数   例如: 1 0011101  * 2  0 1101000 0  1101000 1  0011101 现在大部分计算机都是采用浮点运算。 0 . 12345 X 10  3 1.3 、小数点的处理(定点、浮点)
一个实际数(如 +8.75 )通常由 数值 、 小数点 、 符号 、三部分组成。 因此,将一个实际数在计算机内部表示需要解决三个问题: 1 、符号处理  ( + 8.57 )  正号 “ 0” 、负号 “ 1” 2 、数值的处理  ( 8 . 75 )    二进制、八进制、十六进制、十进制( BCD 编码) 3 、小数点的处理  ( 8 . 75 )   定点数(定点小数、定点整数);浮点数 小结:真值 表示为机器数解决的三个问题
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法   1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
计算机中的 机器数 常用三种不同的表示方法: 原码、 补码、反码。 原码 的表示方法: 一个二进制数  X =  X 0  X 1 X 2   … X n ,原码的编码方法是 当  X ≥ 0  时, [X] 原 的代码是: 0  X 1 X 2   … X n 当  X ≤ 0  时, [X] 原 的代码是: 1  X 1 X 2   … X n X 0 是符号位 X 1 X 2   … X n 是数据的二进制数值。 1.4 、原码的表示方法 一个符号  +  数据的绝对值
1 )原码定点整数的表示方法   ( X 0 X 1 X 2  … X n  )   [X] 原  =  X  2 n > x≥0   2 n -x=2 n +|x|  0≥x > -2 n   [X] 原 是机器数, X 是真值。 一个 n+1 位整数,原码能表示的数值范围是: ( 1111…1 )  -2 n +1 ≤x ≤2 n -1  ( 0111…1 )  对于给定的原码 [X] 原 ,它的真值 X 可根据下列公式求得:   X=(-1) x0 (x 1 2 n-1 …+x n-1 2 1 +x n 2 0 ) 例如 : 假设 x=1010 , y=-1010 ,求 [x] 原  , [y] 原 解 :原码数值部分与它的二进制位相同,加上符号位后   得  [X] 原  =  0 1010  [y] 原  =  1 1010 1.4 、原码的表示方法
2 )原码定点小数 的表示方法  ( X 0 X 1 X 2  … X n  ) [X] 原  =  X  1 > x≥0 1- X =1+| X |  0≥x > -1 一个 n+1 位的定点小数原码能表示的数值范围为: ( 1.111…1 )  -1+2 -n ≤x≤1-2 -n   ( 0.111…1 )  对给定的小数原码 [x] 原 ,它的真值 x 可根据以下公式求得: X=(-1) x0 (x 1 2 -1 …+x n-1 2 - ( n-1 ) +x n 2 -n ) 例如: 假设 x = 0.1010, y = - 0.1010  求  [x] 原  [y] 原 .  解 :原码数值部分与它的二进制位相同,加上符号位后   [X] 原 = 0. 1010  [y] 原 = 1. 1010 1.4 、原码的表示方法
例 : 已知 [x] 原  = 1.1010101,  求 X 的真值? 解 : X 真值  = - 0.1010101 ( 二进制形式写 ) 也可根据以下公式求得: X 真值  =(-1) x 0 (x 1 2 -1 …+x n-1 2 - ( n-1 ) +x n 2 -n ) X 真值  =(-1) 1 ×   (1×2 -1 +0×2 -2 +1×2 -3  +0×2 -4 +1×2 -5 +0×2 -6 +1×2 -7 ) =(-1) ×(0.5+0.125+0.03125+0.0078125) = - 0.6640625 ( 一般真值用十进制形式写 ) 1.4 、原码的表示方法 对给定的小数原码 [x] 原 ,它的真值 x 可根据以下公式求得: X=(-1) x 0 (x 1 2 -1 …+x n-1 2 - ( n-1 ) +x n 2 -n )
原码的性质 优点: 采用原码表示法简单易懂,乘除法运算的规则比较简单。 缺点: 1)  在原码表示中,“ 0” 有两种表示方法,即: +0=000…0  和  -0=100…0 。 2)  加减法运算的实现比较复杂。 两个数相加时需要对 符号进行判断 , 如果同号,则进行加法运算, 如果异号,则进行减法运算。 而在进行减法运算时,还要 比较绝对值 的大小, 然后用大的减去小的,再确定符号 1.4 、原码的表示方法
原码的性质 例如: X=-1001 (-9) 10   Y=+0011 (+3) 10  计算 X+Y 机器数直接相加  [X] 原 + [Y] 原 = 11001 +00011=11100  结果 [ X+Y] 原 =11100  X+Y 的真值为 -1100 (-12) 10  结果错误!!!   1.4 、原码的表示方法 直接采用原码运算是不行的! 处理负数运算太复杂!
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
优点: 具有对称性,容易生成。 缺点: 1 )存在 +0 与 -0 之分。 [+0] 反 =0.00…0  [-0] 反 =1.11…1 。计算时需要把 1.11…1 换成 0.00…0 。 2 )需加权操作,即反码运算若符号位有进位,运算结果要加 1 。 1.5 、反码的表示方法 容易生成: 触发器 Q 端输出是原码, /Q 端输出就是反码,得到方便。 运算复杂:现在计算机中 反码很少使用 ( CDC 公司某些机器使用过) 反码表示法: 正数: 数值部分与真值形式相同; 负数: 真值的数值部分按位取反。 例: X=0.0110 ,  [X] 反 = 0 .0110 X= - 0.0110 ,  [X] 反 = 1 .1001
1 、 数据的表示方式   1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
举例: 时钟是以 12 为 模 的计数。假设现在 4 点正,有一只表已经 7 点 了,为校正时间采用两种方法: 1 )将时钟逆时针拨 3 格, 2 )将时钟顺时针拨 9 格。   可看出减 3 和加 9 是等价的。 也就是说  9 是( -3 )对 12 的补码。     数学公式表达为   - 3 = + 9   (  mod  模  12  )  7 – 3 = 7 + 9 ( mod12 )   mod12 的意思就是12为模数( 12 是丢掉的数值)。 7-3 =4  和  7+9 =16  ( mod12 )等价, 因为表指针超过 12 时,自动丢掉 12 。 1.6 、补码的表示方法 “ 补”的启示: 减法操作可以用加法操作来代替。 也就是负数用补码表示时,可以把减法转化为加法。 在计算机中实现起来就比较方便。 即: 如果用补码表示的话,只设计一个加法运算器就可以实现加减运 算,简化了硬件设计部件。
-0 -1 -128 -127 -127 -126 -3 -2 -1 … 设机器数字长为  8  位(其中1位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少? P 225 ( +X ) + ( - X )  =  0 [+0] 补 =[-0] 补 =0.0000 一 半 正 一 半 负 [ -X ] 补   = [ X ] 补   + 1  0 0000000 0 0000001 0 0000010 … 0 1111111 1 0000000 1 0000001 1 1111101 1 1111110 1 1111111 … 128 129 二进制代码 无符号数 对应的真值 原码对应 的真值 补码对应 的真值 反码对应 的真值 0 1 2 127 … 253 254 255 … -125 -126 -127 … -2 -1 -0 … +0 +1 +2 +127 … +0 +1 +2 +127 … +0 +1 +2 +127 … +0
1 )定点整数的补码 对于一个 n+1 位的二进制整数  X =  X  0  X  1  X  2 … X  n , 则补码表示的定义为: [X]  补  =  x  2 n > x≥0   2 n+1 -|x|  0≥x≥-2 n   ( mod 2 n+1 ) 1.6 、补码的表示方法 正数的补码 与原码相同; 负数的补码 是将二进制位按位取反后,末位加 1 。
例如: 假设  x = 1010, y = - 1010,  求  [x]  补 和  [y] 补 解: 正数补码与原码相同,加上符号位 0 后得: [x] 补 = 0  1010  负数补码的数值部分等于二进制位按位取反,末位加 1 ,符号位 1 , 所以  [y] 补 = 1  0110  ( 1010 取反  0101 , 末位加 1 得  0110 )  求一个负数的补码的另一种方法 : 从低位开始看,对遇到的 0 和 第一个 1 取其原码,从第一个 1 之后开始 直到最高位数值部分,均取反码。符号位为 1 。 例如:  y= - 10 10   [y]  补 = 1 01 10 x= - 1010101 1  [x]  补 = 1 011010 1 1.6 、补码的表示方法
1.6 、补码的表示方法 对于给定定点整数的补码 [x]  补 ,它的数值为: X = - X  0 2 n  + X  1  2 n-1  + … + X  n-1  2 1  + X  n 2 0 例如: [x]  补 =10000000  (  X  0 X  1  。。。 X  n-1  X  n ),求其真值 n+1=8 (共 8 位, 1 位符号位)  n=7 X = -1×2 7  + 0×2 6  + … + 0×2 0  = - 128 一个 n+1  位整数补码所能表示的数值范围为: ( 1 00…0 )  -2 n  ≤ x ≤ 2 n -1   ( 0 11…1 ) 如果是八位二进制数:  -2 7  ≤ x ≤ 2 7 -1  (  -128 ≤ x ≤127  ) 例如: 一个 8 位的机器数,用补码表示的范围是多少? 解: 符号位一位,数值部分七位,那么它的范围是, 正的是: [ 0 1111111  ] 补 = 2 7  - 1 = 127 负的是: [ 1 0000000 ] 补   = -2 7  = - 128
2 )定点小数的补码 对于定点小数 X=X 0 X 1 X 2 …X n ,其补码的表示方法与整数类似, 同样用最高位  X 0 作为符号位,其定义为: [X]  补 =  X  1 > X≥0 2-|X|  0≥X≥-1  ( mod 2 ) 假设: X=0.1010  求  [X] 补 解 :  正数的补码与原码相同,符号位 0 得:  [X] 补 =0.1010 1.6 、补码的表示方法
假设: y = - 0.1010  求  [y] 补 解 :  负数补码的数值部分等于它的二进制位按位取反,末位加 1 。 符号位为 1 , 所以  [y] 补 =1.(0101+1)=1.0110 定点小数补码的 数值范围 为  -1 ≤x≤ 1-2 -n 对于给定的定点小数补码 [x] 补 的代码,它的数值为: X = - x 0 2 0 +x 1 2 -1 +…+x n-1 2 -(n-1) +x n 2 -n 1.6 、补码的表示方法
补码的特性 (解决了负数符号问题!我们重点研究补码!!!) ( 1 )在补码表中, 0 有唯一的编码,即 [+0] 补 =[-0] 补 =0.0000 从数学上讲,零有两种表示对运算不利,所以当今大多数机器都 使用补码。 [+0] 原  =0.0000 [ -0] 原  =1.0000 [+0] 反  =0.0000 [ -0] 反  =1.1111 1.6 、补码的表示方法 0 必须转换 0 必须转换
补码的特性 (解决了负数符号问题!我们重点研究补码!!!) ( 2 )采用补码运算,符号位可以与数值一起参加运算,只要结果不超 出机器所能表示的数值范围; 无须单独设置符号处理线路。(原码运算,符号位要单独处理) 1.6 、补码的表示方法 对于带符号数  x , y 下列公式成立:   [ x ] 补  +  [ y ] 补  = [ x   + y  ] 补  ( mod M )   [ x ] 补  +  [- y ] 补  = [ x   - y  ] 补    ( mod M )  ( 3 )目前大多数小 / 微型计算机 ALU ,只设加法器。采用补码运算后, 可将 正数 + 负数 转化成 正数 + 正数 ,又可将减法转化成加法运算, 这样只设加法器就可以了。 现在几乎所有的计算机都是采用补码运算! 所以,我们研究运算方法和运算器时,只研究补码运算!
真值与三种机器数的转换 如果已知机器的字长,则机器数的位数应补够相应的位。 例如: 设机器字长为 8 位,则: X 1 =1011  X 2 = - 1011  [X 1 ] 原 =  0 000 1011  [X 2 ] 原 = 1 000 1011  [X 1 ] 补 =  0 000 1011  [X 2 ] 补 = 1 111 0101  [X 1 ] 反 =  0 000 1011  [X 2 ] 反 = 1 111 0100 X 3 =0.1011  X 4 = - 0.1011  [X 3 ] 原 =  0 .1011 000   [X 4 ] 原 = 1 .1011 000   [X 3 ] 补 =  0 .1011 000   [X 4 ] 补 = 1 .0101 000   [X 3 ] 反 =  0 .1011 000  [X 4 ] 反 = 1 .0100 111
复习与作业 复习章节: 第 6 章 计算机的运算方法 6.1  无符号数和有符号数 6.2  数的定点表示和浮点表示 6.5  算术逻辑单元 作业: 设机器数字长为  16 位(其中1位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围及机器数形式(十六进制)各为多少? P 290  6.2 、 6.3 、 6.4 、 6.5

More Related Content

PPT
08 计算机的运算方法05
DOC
计算机组成原理题
PDF
PPT
06 计算机的运算方法03
PPTX
實數表示法與運算
PPT
05 计算机的运算方法02
PPTX
小數乘法的直式
PPT
第4章
08 计算机的运算方法05
计算机组成原理题
06 计算机的运算方法03
實數表示法與運算
05 计算机的运算方法02
小數乘法的直式
第4章

What's hot (20)

PPT
第4章1
PDF
ZIP
1 2指數函數
PDF
C语言学习100例实例程序
PDF
Ch2 教學
PPT
241525第三章初等代数运算命令与例题
PDF
Ch9 範例
PDF
Python 迴圈作業
PPT
Example
PDF
運用GAN實現字體風格轉換
PDF
Ch10 習題
PDF
Ch5 範例
PDF
Part 6 2010
PDF
資料結構平常測驗一的解答
DOC
3 1等差與等比
PPTX
Sprout 2013 Solution
PPS
Act2
PPT
康軒 國中數學 3下 課本ppt 1-3 應用問題
PPT
基本遗传算法
PPT
康軒 國中數學 3下 課本ppt 1-1 二次函數的圖形
第4章1
1 2指數函數
C语言学习100例实例程序
Ch2 教學
241525第三章初等代数运算命令与例题
Ch9 範例
Python 迴圈作業
Example
運用GAN實現字體風格轉換
Ch10 習題
Ch5 範例
Part 6 2010
資料結構平常測驗一的解答
3 1等差與等比
Sprout 2013 Solution
Act2
康軒 國中數學 3下 課本ppt 1-3 應用問題
基本遗传算法
康軒 國中數學 3下 課本ppt 1-1 二次函數的圖形
Ad

Similar to 04 计算机的运算方法01 (20)

PPT
第1章
PPT
计算机应用基础课件(一)
PPT
07 计算机的运算方法04
PPTX
05-数制和进制转换05-数制和进制转换05-数制和进制转换05-数制和进制转换.pptx
PDF
Ch02-數字系統.pdf
PPTX
06-信息编码和基本运算06-信息编码和基本运算06-信息编码和基本运算.pptx
PDF
數位邏輯教師手冊+Ch2
PDF
【智慧核心-CPU】第三節:負數、小數的修正機制
PDF
【智慧核心-CPU】第二節:正整數進位制的轉換-編碼
PDF
數位邏輯隨堂講義 第2章(題目卷)
PPTX
ICT_old_ch03-converted.pptx
PPT
計概筆記2
PPT
C 02 c语言的基本数据类型与表达式
PDF
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 基本計概 - 試閱版
PPT
第11章 目标代码生成
PPT
Ch2 1
PDF
Deep learning wiki on data encodingi
PPT
网管会 一些基础知识
第1章
计算机应用基础课件(一)
07 计算机的运算方法04
05-数制和进制转换05-数制和进制转换05-数制和进制转换05-数制和进制转换.pptx
Ch02-數字系統.pdf
06-信息编码和基本运算06-信息编码和基本运算06-信息编码和基本运算.pptx
數位邏輯教師手冊+Ch2
【智慧核心-CPU】第三節:負數、小數的修正機制
【智慧核心-CPU】第二節:正整數進位制的轉換-編碼
數位邏輯隨堂講義 第2章(題目卷)
ICT_old_ch03-converted.pptx
計概筆記2
C 02 c语言的基本数据类型与表达式
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 基本計概 - 試閱版
第11章 目标代码生成
Ch2 1
Deep learning wiki on data encodingi
网管会 一些基础知识
Ad

More from Huaijin Chen (10)

PPT
20 cpu04
PPT
19 cpu03
PPT
18 cpu02
PPT
17 cpu01
PPT
10 存储系统02
PPT
09 存储系统01
PPT
03 计算机的逻辑部件02
PPT
02 计算机的逻辑部件01
PPT
01 课程介绍与计算机系统概述
PPT
21 总线
20 cpu04
19 cpu03
18 cpu02
17 cpu01
10 存储系统02
09 存储系统01
03 计算机的逻辑部件02
02 计算机的逻辑部件01
01 课程介绍与计算机系统概述
21 总线

Recently uploaded (20)

PPTX
3分钟读懂贝尔法斯特女王大学毕业证QUB毕业证学历认证
PPTX
学校原版中央兰开夏大学毕业证UCLan毕业证原版一比一
PPTX
学校原版加利福尼亚大学戴维斯分校毕业证UCD毕业证原版一比一
DOCX
飼主悲傷輔導學 愛,原來是這樣的,即使結局是離別,也會用盡一生記住你教學綱要.docx
PPTX
学校原版巴斯大学毕业证Bath毕业证原版一比一
PPTX
学校原版贝勒大学毕业证Baylor毕业证原版一比一
PPTX
学校原版伦敦城市大学毕业证London Met毕业证原版一比一
PPTX
学校原版加州大学戴维斯分校毕业证UC Davis毕业证原版一比一
PPTX
学校原版哥伦比亚理工学院毕业证BCIT毕业证原版一比一
PPTX
学校原版杜克大学毕业证Duke毕业证原版一比一
PPTX
3分钟读懂南安普顿大学毕业证Soton毕业证学历认证
PDF
修辭手法Chinese as a first language (traditional version).pdf
PPTX
学校原版格里菲斯大学毕业证GU毕业证原版一比一
PPTX
学校原版汤普森河大学毕业证TRU毕业证原版一比一
PPTX
学校原版埃塞克斯大学毕业证Essex毕业证原版一比一
DOC
ATU毕业证学历认证,伍赛斯特大学毕业证毕业证书样本
PPTX
学校原版加州大学戴维斯分校毕业证UCD毕业证原版一比一
PPTX
模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
PPTX
学校原版达尔豪斯大学毕业证Dal毕业证原版一比一
PPTX
2024四年级科学常识比赛2024四年级科学常识比赛2024四年级科学常识比赛2024四年级科学常识比赛
3分钟读懂贝尔法斯特女王大学毕业证QUB毕业证学历认证
学校原版中央兰开夏大学毕业证UCLan毕业证原版一比一
学校原版加利福尼亚大学戴维斯分校毕业证UCD毕业证原版一比一
飼主悲傷輔導學 愛,原來是這樣的,即使結局是離別,也會用盡一生記住你教學綱要.docx
学校原版巴斯大学毕业证Bath毕业证原版一比一
学校原版贝勒大学毕业证Baylor毕业证原版一比一
学校原版伦敦城市大学毕业证London Met毕业证原版一比一
学校原版加州大学戴维斯分校毕业证UC Davis毕业证原版一比一
学校原版哥伦比亚理工学院毕业证BCIT毕业证原版一比一
学校原版杜克大学毕业证Duke毕业证原版一比一
3分钟读懂南安普顿大学毕业证Soton毕业证学历认证
修辭手法Chinese as a first language (traditional version).pdf
学校原版格里菲斯大学毕业证GU毕业证原版一比一
学校原版汤普森河大学毕业证TRU毕业证原版一比一
学校原版埃塞克斯大学毕业证Essex毕业证原版一比一
ATU毕业证学历认证,伍赛斯特大学毕业证毕业证书样本
学校原版加州大学戴维斯分校毕业证UCD毕业证原版一比一
模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
学校原版达尔豪斯大学毕业证Dal毕业证原版一比一
2024四年级科学常识比赛2024四年级科学常识比赛2024四年级科学常识比赛2024四年级科学常识比赛

04 计算机的运算方法01

  • 1. 系 统 总 线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email_address] 《 计算机组成原理 》 第六章 计算机的运算方法
  • 2. 学习目标: 1 、理解 进位计数制 ,掌握常用的进制之间的转换; 2 、理解 真值与机器数 的概念,了解 BCD 码 的概念; 3 、掌握 海明威和循环冗余校验码 的计算; 4 、掌握 定点数 的各种表示方法,包括无符号数的表示,有符号数的 原 码、反码、补码、移码 表示;掌握定点数的 移位运算 ;掌握定点数 的 加减乘除运算 ; 5 、掌握 浮点数 的表示方法,掌握浮点数的 加减乘除 运算原理及流程; 6 、了解 串行加法器 和 并行加法器 的原理;了解 算术逻辑单元 ALU 的功 能和结构。 重点难点; 1 、 定点数 的表示;定点数的 移位运算 ;定点数的 加减乘除运算 ; 2 、 浮点数 的表示; IEEE754 标准;浮点数的 加减运算 ; 3 、 海明威和循环冗余校验码 的原理及计算; 本章学习目标与重点
  • 3. 运算方法: 算术运算 和 逻辑运算 在 运算器 的实现方法。 实现的硬件部件 : 算术逻辑部件 ALU ,或称 运算器 。 由于逻辑运算实现比较简单,通过与或非门等逻辑部件实现, 所以我们主要研究学习计算机中 算术运算 以及 运算器 的逻辑结构。 运算方法 为什么要研究运算方法 ? 答: 1 )一个实际数,怎么用 机器数 表示? (原码、补码、反码等) 机器数具有特定的运算规律,和我们以往研究的算术运算不同。 2 )计算机特定的运算方法: 定点运算 、 浮点运算 。 3 )早期冯 . 诺依曼型运算器只设 加法器 、 寄存器 ,怎么实现加减乘除? 4 )采用什么样的 算法 与 运算器的结构 密切相关,两者的设计是相互 影响的。不同的算法决定运算器不同的结构。
  • 4. 运算器的基本结构 运算器功能: 完成 算术运算 和 逻辑运算 的部件。 设计考虑: 任意 算术运算(加减乘除)都可通过 相加 和 移位 来解决。 所以运算器的核心部件是 加法器 和 移位器 。 减法 可以通过加法来解决 12-7=5 (以 10 为模) 12+3 ( 7 的补码) =15 (去模) =5 123-78 (以 100 为模) 100-78=22 123+22=145 (去模) = 45 乘法 可以通过连续的加法来解决 除法 可以通过连续的减法来解决 系 统 总 线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 运算部件 任何一个硬部件的基本结构一定和功能有关系!
  • 5. 运算器的基本结构:( P 283 ) 加法器 、 移位门 、 寄存器组 、 输入选择门 和 数据总线 组成。 问题 1 、 加法器: 没有记忆功能。 参与运算的数,运算的结果放那里? ( A+B ) + ( C+D ) 答: 存放在 寄存器组 (多个寄存器)中。 问题 2 、 加法器: 三输入两输出 (输入:两个数和低位进位) 一次只有两个数进行运算, 究竟让哪个寄存器参加工作呢? 答: 要进行 选择 (选择门)。 移位门 加法器 选择门 A 选择门 B 通用 寄存器组 数据总线 数据总线 运算器基本结构框图 运算部件
  • 6. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 7. 通常我们把一个 数(连同符号) 在机器中数值化后表示为 机器数 , 而把原来的数值称为机器数的 真值 。 一个 实际数 (如 +8.75 )通常由 数值 、 小数点 、 符号 、三部分组成。 因此,将一个实际数在计算机内部表示需要解决三个问题: 1 、符号的处理 ( + 8.57 ) 2 、数值的处理 ( 8 . 75 ) 3 、小数点的处理 ( 8 . 75 ) 1 、 数据的表示方式(从真值到机器数) 真值 +5 = 机器数 0101
  • 8. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 9. 真值: 计算机中用正负号和绝对值表示的数。 例如: +123 , -123 , +101011 , -10101011 机器数: 计算机中把 符号位 和 数值 数码化以后的数。 例如: +123 = 0 1111011 -123 = 1 1111011 + 1010110 = 0 1010110 -1010101 = 1 1010101 带符号的 n 位有效数,机器数为 n+1 位 . 通常符号处理有两种方法: 1 )一种是舍弃符号,采用无符号表示; 2 )一种是采用符号,并对符号加以处理。 如何处理符号呢?途径只有一条,即 符号数码化 。 “ 0 ” 表示 正 ,“ 1 ” 表示 负 。 1.1 、符号的处理(正数、负数)
  • 10. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 11. 1 )直接采用二进制数表示 如( 255 ) 10 = ( 11111111 ) 2 优点: 在计算机中,数码是由电平的高低来表示的; 通常高 电平代表“ 1” , 低电平代表“ 0” ; 所以采用二进制方便,容易实现。 缺点: 八个 1 表示 255 , 二进制表示数码的效率太低, 书写极其不方便。 1.2 、数值的处理(数制转换)
  • 12. 2 )引进组合二进制数:八、十六进制数 从最低有效位开始,三位一划分,组成 八进制 Q ; 从最低有效位开始,四位一划分,组成 十六进制 H 。 例如: 110101111001 二进制 110101111001 6571 Q 八进制 110101111001 D79 H 十六进制 注意: 这种引进,主要是 为了书写方便而已 , 在机器 内部表示是一样 的,不需要编码 译码 。 1.2 、数值的处理(数制转换)
  • 13. 1.2 、数值的处理(数制转换) 1 5 F 1 7 1 1 1 1 1 4 E 1 6 1 1 1 0 1 3 D 1 5 1 1 0 1 1 2 C 1 4 1 1 0 0 1 1 B 1 3 1 0 1 1 1 0 A 1 2 1 0 1 0 9 9 1 1 1 0 0 1 8 8 1 0 1 0 0 0 7 7 0 7 0 1 1 1 6 6 0 6 0 1 1 0 5 5 0 5 0 1 0 1 4 4 0 4 0 1 0 0 3 3 0 3 0 0 1 1 2 2 0 2 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 十进制数 D 十六进制数 H 八进制数 O/Q 二进制数 B
  • 14. 二进制数、八进制数、十六进制之间的转换 对于一个兼有整数和小数部分的数,以小数点为界, 不足的位数补 0 。 对整数部分将 0 补在数的左侧,对小数部分将 0 补在数的右侧。 例: 从二进制数转换到八进制数,则以 3 位为 1 组 ( 1 101 . 010 1 ) 2 =( 001 101 . 010 100 ) 2 =(15.24) 8 例: 从二进制数转换到十六进制数,则以 4 位为 1 组 。 ( 1 1101 . 0101 ) 2 =( 0001 1101 . 0101 ) 2 =(1D.5) 16 从八进制数 / 十六进制数转换到二进制数,顺序将每一位数写成 3/4 位。 例: (15.24) 8 =( 00 1 101 . 010 1 00 ) 2 =(1101.0101) 2 八进制数与十六进制数之间,可将二进制数作为中间媒介进行转换。 1.2 、数值的处理(数制转换)
  • 15. 3 ) BCD 码(十进制): 如果计算机以二进制进行运算和处理时,只要在输入输出处理时进 行二 / 十进制转换即可。 但在商业统计中, 二 / 十进制转换存在两个问题 : ( 1 )转换占用实际运算很大的时间; ( 2 )十进制的 0.1 ,无法用二进制表示; 且十进制数 0.1+0.1=0.2 ,在二进制中无法得到确切的数值, 这里有个小误差。 商用计算机设计有专门用于十进制计算电路,这时的十进制数一般采用 BCD 码 。 1.2 、数值的处理(数制转换)
  • 16. 例: 将 (105) 10 转换成二进制。 2 105 余数 结果 2 52 1 最低位 2 26 0 2 13 0 … 2 6 1 2 3 0 2 1 1 0 1 最高位 得出: ( 105 ) 10 = ( 1101001 ) 2 十进制数转换成二进制数 : 对一个数的 整数部分和小数部分 分别进行处理,合并各自得出结果。 整数部分: 采用 除 2 取余数 法。 直到商等于 0 为止 1.2 、数值的处理(数制转换)
  • 17. 直到乘积的小数部分为 0 , 或结果已满足所需精度要求为止 十进制数转换成二进制数 : 对一个数的 整数部分和小数部分 分别进行处理,合并各自得出结果。 小数部分: 采用 乘 2 取整数 法。 例: 将 (0.3125) 10 转换成二进制数 ( 要求 4 位有效位 ) 。 结果 0.3125×2 最高位 0 .6250×2 … 1 .2500×2 0 .5000×2 最低位 1 . 0000 得出 : ( 0.3125 ) 10 = ( 0.0101 ) 2 1.2 、数值的处理(数制转换)
  • 18. 十进制数转换成二进制数 : 对一个数的 整数部分和小数部分 分别进行处理,合并各自得出结果。 例: 将 (105.3125) 10 转换成二进制数 ( 要求 4 位有效位 ) 。 前面计算得出: ( 105 ) 10 = ( 1101001 ) 2 前面计算得出 : ( 0.3125 ) 10 = ( 0. 0101 ) 2 得出: ( 105.3125 ) 10 = ( 1101001 . 0101 ) 2 1.2 、数值的处理(数制转换)
  • 19. 直到乘积的小数部分为 0 , 或结果已满足所需精度要求为止 . 例: 将 (0. 1) 10 转换成二进制数 ( 要求 5 位有效位 ) 。 结果 0.1×2 最高位 0 .2×2 … 0 .4×2 0 .8×2 1 .6×2 1 .2×2 0 .4×2 0 .8×2 最低位 1 .6 000 得出 : ( 0.1 ) 10 = ( 0.00011 ) 2 可能永远乘不完,小数部分不为 0 , 意味存在一点误差。 1.2 、数值的处理(数制转换)
  • 20. 由于 ASCII 码低四位与 BCD 码相同,转换方便。 ASCII 码左移四位得 BCD 码, BCD 码前加 0011 得 ASCII 码。 一般在二进制的计算机中一般不采用 BCD 码,矫正不方便。 在 商用计算机 中,专门设置有十进制电路,采用 BCD 码。 十进制 BCD 码 二进制数 十六进制数 ASCII 码 0 0000 0000 0 0011 0000 1 0001 0001 1 0011 0001 …… …… …… …… …… 9 1001 1001 9 0011 1001 10 0001 0000 1010 A 16 0001 0110 1111 F 从键盘输入输出的是 ASCII 码( P214 ) 1.2 、数值的处理(数制转换)
  • 21. BCD 码算术运算,要对运算结果进行 修正 。 加法运算的修正规则是: 两个一位 BCD 码相加之和小于或等于 (1001) 2 , 即 (9) 10, 不修正; 相加之和大于或等于 (10) 10 ,要 加 6 修正 ,并向高位进位。 4+9=13 0 1 0 0 + 1 0 0 1 1 1 0 1 + 0 1 1 0 修正 1 0 0 1 1 进位 1+8=9 0 0 0 1 + 1 0 0 0 1 0 0 1 不需要修正 9+7=16 1 0 0 1 + 0 1 1 1 1 0 0 0 0 + 0 1 1 0 修正 1 0 1 1 0 进位 1.2 、数值的处理(数制转换)
  • 22. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 23. 小数点可否数码化? 如 10110011 ,你能鉴别哪一位数码表示小数点吗? 答案: 不能!无法与数位相区别。 1.3 、小数点的处理(定点、浮点) 定点数 : 小数点固定在某个位置上的数据。 定点小数 : 小数点固定在数值部分的左边,符号位的右边。 定点整数 : 小数点固定在数值部分的右边。 定点数的表示范围是有限的,但硬件的设计比较简单。 浮点数 : 指小数点位置可浮动的数据。
  • 24. 1 、定点数的表示方法: 例如: 123.45 = 0 . 12345 X 10 3 纯小数 123.45 = 12345 X 10 -2 纯整数 假设用一个 n+1 位表示定点数 X = X 0 X 1 X 2 …X n , X 0 : 表示符号(放在最左位置,“ 0” 正号 / “1” 负号), X 1 X 2 …X n : 其余位数代表数值。 对于任意一个定点数,在定点计算机中数的表示格式如下: X 0 X 1 X 2 … X n 尾数(数值) 符号 1.3 、小数点的处理(定点、浮点)
  • 25. 定点小数 : 小数点位于在 X 0 和 X 1 之间,表示纯小数。 数值范围: 当 X 1 X 2 …X n 各位是 0 时: 0 .0000000 , |X| 最小 =0 当 X 1 X 2 …X n 各位是 1 时: 0 .1111111 , |X| 最大 =1-2 -n 0≤ |X|≤1-2 -n X 0 X 1 X 2 … X n 尾数(数值) 符号 小数点的这个点在计算机中是 隐含约定 的,不出现的。 1.3 、小数点的处理(定点、浮点)
  • 26. 定点整数 : 小数点位于最低位的右边。 数值范围: 当 X 1 X 2 …X n 各位是 0 时: 0 0000000 , |X| 最小 =0 当 X 1 X 2 …X n 各位是 1 时: 0 1111111 , |X| 最大 =2 n+1 -1 0≤X≤2 n+1 -1 X 0 X 1 X 2 … X n 尾数(数值) 符号 1.3 、小数点的处理(定点、浮点)
  • 27. 定点小数数值表示: X = X 0 X 1 X 2 …X n X 0 =0,X i ={0,1}, 0≤i≤n X 1 2 -1 + … + X n-1 2 -n+1 + X n 2 -n 例如: X = 0.10101 其数值 = 2 -1 +2 -3 +2 -5 = 21/32 定点整数数值表示: X = X 0 X 1 X 2 …X n X i ={0,1}, 0≤i≤n X 0 2 n + X 1 2 n-1 + … + X n-1 2 1 + X n 例如 : X = 010101 其数值 = 2 4 +2 2 +2 0 = 21 1.3 、小数点的处理(定点、浮点)
  • 28. 阶码 浮点数 机器格式: 尾数 阶符 数符 浮点数: 小数点的位置根据需要而浮动。 N = S × r j r :基数 ,通常 r = 2 。 j :阶码 ,常为 纯整数 ,用移码或补码表示。 S :尾数 ,常为 纯小数 ,用原码或补码表示。 j 和 S 都是 带符号的数 例如: 1 0011101 * 2 0 1101000 0 1101000 1 0011101 现在大部分计算机都是采用浮点运算。 0 . 12345 X 10 3 1.3 、小数点的处理(定点、浮点)
  • 29. 一个实际数(如 +8.75 )通常由 数值 、 小数点 、 符号 、三部分组成。 因此,将一个实际数在计算机内部表示需要解决三个问题: 1 、符号处理 ( + 8.57 ) 正号 “ 0” 、负号 “ 1” 2 、数值的处理 ( 8 . 75 ) 二进制、八进制、十六进制、十进制( BCD 编码) 3 、小数点的处理 ( 8 . 75 ) 定点数(定点小数、定点整数);浮点数 小结:真值 表示为机器数解决的三个问题
  • 30. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 31. 计算机中的 机器数 常用三种不同的表示方法: 原码、 补码、反码。 原码 的表示方法: 一个二进制数 X = X 0 X 1 X 2 … X n ,原码的编码方法是 当 X ≥ 0 时, [X] 原 的代码是: 0 X 1 X 2 … X n 当 X ≤ 0 时, [X] 原 的代码是: 1 X 1 X 2 … X n X 0 是符号位 X 1 X 2 … X n 是数据的二进制数值。 1.4 、原码的表示方法 一个符号 + 数据的绝对值
  • 32. 1 )原码定点整数的表示方法 ( X 0 X 1 X 2 … X n ) [X] 原 = X 2 n > x≥0 2 n -x=2 n +|x| 0≥x > -2 n [X] 原 是机器数, X 是真值。 一个 n+1 位整数,原码能表示的数值范围是: ( 1111…1 ) -2 n +1 ≤x ≤2 n -1 ( 0111…1 ) 对于给定的原码 [X] 原 ,它的真值 X 可根据下列公式求得: X=(-1) x0 (x 1 2 n-1 …+x n-1 2 1 +x n 2 0 ) 例如 : 假设 x=1010 , y=-1010 ,求 [x] 原 , [y] 原 解 :原码数值部分与它的二进制位相同,加上符号位后 得 [X] 原 = 0 1010 [y] 原 = 1 1010 1.4 、原码的表示方法
  • 33. 2 )原码定点小数 的表示方法 ( X 0 X 1 X 2 … X n ) [X] 原 = X 1 > x≥0 1- X =1+| X | 0≥x > -1 一个 n+1 位的定点小数原码能表示的数值范围为: ( 1.111…1 ) -1+2 -n ≤x≤1-2 -n ( 0.111…1 ) 对给定的小数原码 [x] 原 ,它的真值 x 可根据以下公式求得: X=(-1) x0 (x 1 2 -1 …+x n-1 2 - ( n-1 ) +x n 2 -n ) 例如: 假设 x = 0.1010, y = - 0.1010 求 [x] 原 [y] 原 . 解 :原码数值部分与它的二进制位相同,加上符号位后 [X] 原 = 0. 1010 [y] 原 = 1. 1010 1.4 、原码的表示方法
  • 34. 例 : 已知 [x] 原 = 1.1010101, 求 X 的真值? 解 : X 真值 = - 0.1010101 ( 二进制形式写 ) 也可根据以下公式求得: X 真值 =(-1) x 0 (x 1 2 -1 …+x n-1 2 - ( n-1 ) +x n 2 -n ) X 真值 =(-1) 1 × (1×2 -1 +0×2 -2 +1×2 -3 +0×2 -4 +1×2 -5 +0×2 -6 +1×2 -7 ) =(-1) ×(0.5+0.125+0.03125+0.0078125) = - 0.6640625 ( 一般真值用十进制形式写 ) 1.4 、原码的表示方法 对给定的小数原码 [x] 原 ,它的真值 x 可根据以下公式求得: X=(-1) x 0 (x 1 2 -1 …+x n-1 2 - ( n-1 ) +x n 2 -n )
  • 35. 原码的性质 优点: 采用原码表示法简单易懂,乘除法运算的规则比较简单。 缺点: 1) 在原码表示中,“ 0” 有两种表示方法,即: +0=000…0 和 -0=100…0 。 2) 加减法运算的实现比较复杂。 两个数相加时需要对 符号进行判断 , 如果同号,则进行加法运算, 如果异号,则进行减法运算。 而在进行减法运算时,还要 比较绝对值 的大小, 然后用大的减去小的,再确定符号 1.4 、原码的表示方法
  • 36. 原码的性质 例如: X=-1001 (-9) 10 Y=+0011 (+3) 10 计算 X+Y 机器数直接相加 [X] 原 + [Y] 原 = 11001 +00011=11100 结果 [ X+Y] 原 =11100 X+Y 的真值为 -1100 (-12) 10 结果错误!!! 1.4 、原码的表示方法 直接采用原码运算是不行的! 处理负数运算太复杂!
  • 37. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 38. 优点: 具有对称性,容易生成。 缺点: 1 )存在 +0 与 -0 之分。 [+0] 反 =0.00…0 [-0] 反 =1.11…1 。计算时需要把 1.11…1 换成 0.00…0 。 2 )需加权操作,即反码运算若符号位有进位,运算结果要加 1 。 1.5 、反码的表示方法 容易生成: 触发器 Q 端输出是原码, /Q 端输出就是反码,得到方便。 运算复杂:现在计算机中 反码很少使用 ( CDC 公司某些机器使用过) 反码表示法: 正数: 数值部分与真值形式相同; 负数: 真值的数值部分按位取反。 例: X=0.0110 , [X] 反 = 0 .0110 X= - 0.0110 , [X] 反 = 1 .1001
  • 39. 1 、 数据的表示方式 1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换) 1.3 、小数点的处理(定点、浮点) 1.4 、原码的表示方法 1.5 、反码的表示方法 1.6 、补码的表示方法(重点研究) 1.7 、字符的表示方法 1.8 、汉字的表示方法 1.9 、校验码 第六章 计算机的运算方法 机器数的 表示方法 真值表示 问题解决
  • 40. 举例: 时钟是以 12 为 模 的计数。假设现在 4 点正,有一只表已经 7 点 了,为校正时间采用两种方法: 1 )将时钟逆时针拨 3 格, 2 )将时钟顺时针拨 9 格。 可看出减 3 和加 9 是等价的。 也就是说 9 是( -3 )对 12 的补码。 数学公式表达为 - 3 = + 9 ( mod 模 12 ) 7 – 3 = 7 + 9 ( mod12 ) mod12 的意思就是12为模数( 12 是丢掉的数值)。 7-3 =4 和 7+9 =16 ( mod12 )等价, 因为表指针超过 12 时,自动丢掉 12 。 1.6 、补码的表示方法 “ 补”的启示: 减法操作可以用加法操作来代替。 也就是负数用补码表示时,可以把减法转化为加法。 在计算机中实现起来就比较方便。 即: 如果用补码表示的话,只设计一个加法运算器就可以实现加减运 算,简化了硬件设计部件。
  • 41. -0 -1 -128 -127 -127 -126 -3 -2 -1 … 设机器数字长为 8 位(其中1位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少? P 225 ( +X ) + ( - X ) = 0 [+0] 补 =[-0] 补 =0.0000 一 半 正 一 半 负 [ -X ] 补 = [ X ] 补 + 1 0 0000000 0 0000001 0 0000010 … 0 1111111 1 0000000 1 0000001 1 1111101 1 1111110 1 1111111 … 128 129 二进制代码 无符号数 对应的真值 原码对应 的真值 补码对应 的真值 反码对应 的真值 0 1 2 127 … 253 254 255 … -125 -126 -127 … -2 -1 -0 … +0 +1 +2 +127 … +0 +1 +2 +127 … +0 +1 +2 +127 … +0
  • 42. 1 )定点整数的补码 对于一个 n+1 位的二进制整数 X = X 0 X 1 X 2 … X n , 则补码表示的定义为: [X] 补 = x 2 n > x≥0 2 n+1 -|x| 0≥x≥-2 n ( mod 2 n+1 ) 1.6 、补码的表示方法 正数的补码 与原码相同; 负数的补码 是将二进制位按位取反后,末位加 1 。
  • 43. 例如: 假设 x = 1010, y = - 1010, 求 [x] 补 和 [y] 补 解: 正数补码与原码相同,加上符号位 0 后得: [x] 补 = 0 1010 负数补码的数值部分等于二进制位按位取反,末位加 1 ,符号位 1 , 所以 [y] 补 = 1 0110 ( 1010 取反 0101 , 末位加 1 得 0110 ) 求一个负数的补码的另一种方法 : 从低位开始看,对遇到的 0 和 第一个 1 取其原码,从第一个 1 之后开始 直到最高位数值部分,均取反码。符号位为 1 。 例如: y= - 10 10 [y] 补 = 1 01 10 x= - 1010101 1 [x] 补 = 1 011010 1 1.6 、补码的表示方法
  • 44. 1.6 、补码的表示方法 对于给定定点整数的补码 [x] 补 ,它的数值为: X = - X 0 2 n + X 1 2 n-1 + … + X n-1 2 1 + X n 2 0 例如: [x] 补 =10000000 ( X 0 X 1 。。。 X n-1 X n ),求其真值 n+1=8 (共 8 位, 1 位符号位) n=7 X = -1×2 7 + 0×2 6 + … + 0×2 0 = - 128 一个 n+1 位整数补码所能表示的数值范围为: ( 1 00…0 ) -2 n ≤ x ≤ 2 n -1 ( 0 11…1 ) 如果是八位二进制数: -2 7 ≤ x ≤ 2 7 -1 ( -128 ≤ x ≤127 ) 例如: 一个 8 位的机器数,用补码表示的范围是多少? 解: 符号位一位,数值部分七位,那么它的范围是, 正的是: [ 0 1111111 ] 补 = 2 7 - 1 = 127 负的是: [ 1 0000000 ] 补 = -2 7 = - 128
  • 45. 2 )定点小数的补码 对于定点小数 X=X 0 X 1 X 2 …X n ,其补码的表示方法与整数类似, 同样用最高位 X 0 作为符号位,其定义为: [X] 补 = X 1 > X≥0 2-|X| 0≥X≥-1 ( mod 2 ) 假设: X=0.1010 求 [X] 补 解 : 正数的补码与原码相同,符号位 0 得: [X] 补 =0.1010 1.6 、补码的表示方法
  • 46. 假设: y = - 0.1010 求 [y] 补 解 : 负数补码的数值部分等于它的二进制位按位取反,末位加 1 。 符号位为 1 , 所以 [y] 补 =1.(0101+1)=1.0110 定点小数补码的 数值范围 为 -1 ≤x≤ 1-2 -n 对于给定的定点小数补码 [x] 补 的代码,它的数值为: X = - x 0 2 0 +x 1 2 -1 +…+x n-1 2 -(n-1) +x n 2 -n 1.6 、补码的表示方法
  • 47. 补码的特性 (解决了负数符号问题!我们重点研究补码!!!) ( 1 )在补码表中, 0 有唯一的编码,即 [+0] 补 =[-0] 补 =0.0000 从数学上讲,零有两种表示对运算不利,所以当今大多数机器都 使用补码。 [+0] 原 =0.0000 [ -0] 原 =1.0000 [+0] 反 =0.0000 [ -0] 反 =1.1111 1.6 、补码的表示方法 0 必须转换 0 必须转换
  • 48. 补码的特性 (解决了负数符号问题!我们重点研究补码!!!) ( 2 )采用补码运算,符号位可以与数值一起参加运算,只要结果不超 出机器所能表示的数值范围; 无须单独设置符号处理线路。(原码运算,符号位要单独处理) 1.6 、补码的表示方法 对于带符号数 x , y 下列公式成立: [ x ] 补 + [ y ] 补 = [ x + y ] 补 ( mod M ) [ x ] 补 + [- y ] 补 = [ x - y ] 补 ( mod M ) ( 3 )目前大多数小 / 微型计算机 ALU ,只设加法器。采用补码运算后, 可将 正数 + 负数 转化成 正数 + 正数 ,又可将减法转化成加法运算, 这样只设加法器就可以了。 现在几乎所有的计算机都是采用补码运算! 所以,我们研究运算方法和运算器时,只研究补码运算!
  • 49. 真值与三种机器数的转换 如果已知机器的字长,则机器数的位数应补够相应的位。 例如: 设机器字长为 8 位,则: X 1 =1011 X 2 = - 1011 [X 1 ] 原 = 0 000 1011 [X 2 ] 原 = 1 000 1011 [X 1 ] 补 = 0 000 1011 [X 2 ] 补 = 1 111 0101 [X 1 ] 反 = 0 000 1011 [X 2 ] 反 = 1 111 0100 X 3 =0.1011 X 4 = - 0.1011 [X 3 ] 原 = 0 .1011 000 [X 4 ] 原 = 1 .1011 000 [X 3 ] 补 = 0 .1011 000 [X 4 ] 补 = 1 .0101 000 [X 3 ] 反 = 0 .1011 000 [X 4 ] 反 = 1 .0100 111
  • 50. 复习与作业 复习章节: 第 6 章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.5 算术逻辑单元 作业: 设机器数字长为 16 位(其中1位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围及机器数形式(十六进制)各为多少? P 290 6.2 、 6.3 、 6.4 、 6.5