2-2 定点加减法运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
…
1
B ALU→A
1
…
0
一、填空 1、补码加减法中( 、补码加减法中( 要丢掉。 )作为数的一部分参加运算,( )要丢掉。 作为数的一部分参加运算,( 2、为判断溢出,可采用双符号位补码,此时正数的符号用( )表示 、为判断溢出,可采用双符号位补码,此时正数的符号用( 负数的符号用( 负数的符号用( )。 3、采用双符号位的方法进行溢出检测是,若运算结果中两个符号位 、采用双符号位的方法进行溢出检测是, ),则表明发生了溢出 若结果的符号位为( ),表示发 则表明发生了溢出。 ( ),则表明发生了溢出。若结果的符号位为( ),表示发 生正溢出;若为( ),表示发生负溢出 表示发生负溢出。 生正溢出;若为( ),表示发生负溢出。 4、采用单符号位进行溢出检测进,若加数与被加数符号相同,而运 、采用单符号位进行溢出检测进,若加数与被加数符号相同, 算结果的符号与操作数的符号( 算结果的符号与操作数的符号( ),则表示溢出; ),则表示溢出;当加数与 则表示溢出 )。 被加数符号不同时,相加运算的结果( 被加数符号不同时,相加运算的结果(
例1:已知:[A]原=1.01101,[B]原=0.01011 已知:[A]原=1.01101,[B]原 [A]原+[B]原 求:[A]原+[B]原
2、第二种算法
C’的基值补 的基值补 码的含义是 对C’的数值 的数值 部分求补
加
减 B0 → B0 是 A0=B0? 否 C’=A*-B* 是 C0=1 ? 否 C0=A0
C*=A*+B* 是 C0=1? ? 否 C0=A0
C* = C ’ 的基值补 码 , C0 = A0
溢出
结束
[A]原=0.01011,[B]原 例2 :已知 [A]原=0.01011,[B]原=1.01101 [A]原+[B]原 求:[A]原+[B]原
练习: 例1、已知 x=0.1010 、 y= - -0.0011, 用补码的加减法 0.1010, 练习:已知 x=0.1001 、 y= 0.0011, 用补码的加减法 二 : 补码加减法运算 0.1010, y]补 y]补和 y]补 求 [补码加减法的运算公式 x+y 和 x-y 的值 x + y]补 、 [x –y]补及 y]补 1、 [ x + y]补和[x – y]补及 (1)补码加法 公式: 公式: [ A + B ]补=[A] 补+ [B]补 (2)补码减法 公式: 公式: [A - B]补= [A] 补 - [B]补= [A] 补 + [ - B]补 [ - B]补 的求法:将[ B]补逐位取反(包括符号位),末 B]补 的求法: B]补逐位取反(包括符号位),末 补逐位取反 ), 位加 1。 2、补码加减法的运算规则 参加运算的数都用补码表示。 ①参加运算的数都用补码表示。 数据的符号与数据一样参加运算。 ②数据的符号与数据一样参加运算。 ③求差时将减数求补,用求和代替求差。 求差时将减数求补,用求和代替求差。 运算结果为补码,如果符号位为0 ④运算结果为补码,如果符号位为0,表明运算结果 为正;符号位为1 则运算结果为负。 为正;符号位为1,则运算结果为负。 符号位的进位为模值,应该丢掉。 ⑤符号位的进位为模值,应该丢掉。
用两个相同的符号位表示一个数的符号。 相异(01、10) 用两个相同的符号位表示一个数的符号。当Sf1 Sf2相异(01、10)则 溢出,其中01表示正向溢出、10表示负向溢出 01表示正向溢出 表示负向溢出, 溢出,其中01表示正向溢出、10表示负向溢出, Sf1 为结果的真正符 相同(00、11) 号。相同(00、11)不溢出
5、利用数据编码的最高位和次高位的进位状况来判断溢出,其逻辑 、利用数据编码的最高位和次高位的进位状况来判断溢出, 表达式V=( 表达式 ( )。 6、在减法运算中,正数减( 、在减法运算中,正数减( ( )溢出;负数减( 溢出;负数减( )数可能产生溢出,此时的溢出为 数可能产生溢出, )。 )可能产生溢出,此时的溢出为( 可能产生溢出,此时的溢出为(
三、反码加减法运算
1、基本公式 (1)加法 [A+B]反 =[A]反+[B]反 [A+[(2)减法 [A-B]反=[A]反+[-B]反 B]反的求法 反的求法: [B]反连同符号位在内 反连同符号位在内, [-B]反的求法:是[B]反连同符号位在内,每位求反 。 循环进位: 循环进位:反码加减运算时符号位同数值位一起参加运 但符号位的进位不能丢失, 算,但符号位的进位不能丢失,需加到数值 位的末位。 位的末位。
§2 · 3 定点加减法运算
原码加减法运算 补码加减法运算及溢出的判断 反码加减法运算
一、原码加减法运算
1、 第一种算法
加 减 B0→B0 其中A0、 、 其中 、B0、C0 表示A、 、 三 表示 、B、C三 是 否 个数的符号。 个数的符号。 A0=B0? 否 A*、B*和C*表示 、 和 表示 * >B* ? A 是 C*=A*+B* A、B、C三个数 、 、 三个数 的绝对值。 的绝对值。 C*=A*-B* C*=B*-A* 否 即A*、B*、C*的 、 、 的 C0 =1 符号全为正(0)。 符号全为正( )。 ?是 C0=A0 C0=A0 C0=B0 溢出 结束
四、计算题 已知X 用变形码计算X 1、已知X和Y,用变形码计算X+Y、X-Y,同时指出运算结果是 否溢出? 否溢出? )X=27/32 X=13/16,Y=(1)X=27/32 ,Y=31/32 (2)X=13/16,Y=-11/16 已知机器字长n=8 X=- 44,Y=- 53, X+Y和 n=8, 2、已知机器字长n=8,X=- 44,Y=- 53,求X+Y和X-Y 已知[X] =1.1011000,[Y]补=1.1011000, [X]补 3、已知[X]补=1.1011000,[Y]补=1.1011000,用变形补码计算 2[X]补+1/2[Y]补 并判断结果有无溢出? 2[X]补+1/2[Y]补,并判断结果有无溢出? 已知2[X] =1.0101001,1/2[Y]原=1.0101000, 2[X]补 4、已知2[X]补=1.0101001,1/2[Y]原=1.0101000,用变形补码计 算[X]补+[Y]补,并判断结果有无溢出? [X]补+[Y]补 并判断结果有无溢出? 1/2[X]补=1.0101001,2[Y]原=0.1101100, 5、已知 1/2[X]补=1.0101001,2[Y]原=0.1101100,用变形补码计 [X]补+[Y]补 并判断结果有无溢出? 算[X]补+[Y]补,并判断结果有无溢出? 已知X= 7.25,Y=28.5625用变形补码求 Y=? X=用变形补码求X 6、已知X=-7.25,Y=28.5625用变形补码求X-Y=? 已知Y= 0.0101,机器数用双符号表示。分别求[Y] Y=[Y]补 [1/2Y]补 7、已知Y=-0.0101,机器数用双符号表示。分别求[Y]补、[1/2Y]补 Y]补 和[-Y]补。
其中A0、B0、C0为参与运算的 其中A0、B0、C0为参与运算的 A0 A、B的符号和补码加法后所得和 的符号。 C的符号。
判断溢出的电路图 补码加减法溢出判断方法 3、补码加减法溢出判断方法 A0 x=0.1001 、 、 y= 0.1010, 0.1010, 0.0101000, y]补 例21::已知 x=0.1001 、 y=0.1010,,用变形补码求 补 例 :已知 x=-0.0101001y= - Sf1 0.1010 用补码的加减法求 例3 已知 x=- - 0.0101000,求[ x + y] FA B0 是指运算结果超出机器字长所能表示的范围。 溢出是指运算结果超出机器字长所能表示的范围 溢出是指运算结果超出机器字长所能表示的范围。 ⊕ 并判断其溢出情况。 y]补并判断其溢出情况 并判断其溢出情况。 V y]补并判断其溢出情况 补并判断其溢出情况。 [ xA0 y]补 补 [x – y]补并判断其溢出情况。 。 [+ + y] x y]补 y]补并判断其溢出情况 A0’y]补 、 、[x –补并判断其溢出情况。 两个符号相同的数相加,可能产生溢出; 两个符号相同的数相加,可能产生溢出;两个符号 FA B0’ B0 Sf2 相异的数相加,不可能产生溢出。 相异的数相加,不可能产生溢出。 (1)单符号法 V=Af Bf Sf + Af Bf Sf (2)进位判断法 V= C Cf + C Cf
(3)反码加减法流程
来自百度文库加 减 B →B
A + B → C C-1表示运算结果 的符号位的进位 C- 1 =1 ? C + 2- n → C
是 溢出
且A0=B0 A0≠C0 ? 否 结束
四、实现补码加减法运算的逻辑框图
1 … … 1
ALU+1
+ A→ ALU A 0
…
+ B→ ALU
B→ ALU …
符号( 相同的两个数相运算, 符号( Af 、Bf )相同的两个数相运算, 其运算结果的符号S 相反。 其运算结果的符号Sf 与Af 或Bf相反。 C为数值最高位向符号位的进位值,Cf为 为数值最高位向符号位的进位值,Cf为 符号位产生的进位值, 符号位产生的进位值,两者相异则溢出
(3)双符号法(变形补码法) 双符号法(变形补码法) V= Sf1 Sf2 + Sf1 Sf2 = Sf1 ⊕Sf2
二、选择题 在定点二进制运算器中,减法运算一般通过( 实现。 1、在定点二进制运算器中,减法运算一般通过( )实现。 A、原码运算的二进制减法器 B、补码运算的二进制减法器 A、原码运算的二进制减法器 B、补码运算的二进制减法器 C、补码运算的十进制加法器 D、补码运算的二进制加法器 C、补码运算的十进制加法器 D、补码运算的二进制加法器 在定点运算器中,无论采用双符号位还是单符号位, 2、在定点运算器中,无论采用双符号位还是单符号位,必须有 ),它一般用 它一般用( 来实现。 ( ),它一般用( )来实现。 A、译码电路 译码电路、 B、编码电路 编码电路、 A、译码电路、与非门 B、编码电路、或非门 C、溢出判断电路 溢出判断电路、 D、移位电路 移位电路、 C、溢出判断电路、异或门 D、移位电路、与或非门 3、在补码加减法规则中 下哪一个说法是正确的( 下哪一个说法是正确的( 、在补码加减法规则中,下哪一个说法是正确的 ) A、所有的操作数都用补码表示,结果也用补码表示 、所有的操作数都用补码表示, B、若两数同号做加法,异号则做减法 、若两数同号做加法, C、符号位和数值位分开处理 、 D、结果的符号为 ,表示溢出 、结果的符号为1, 三、简答题 简述采用双符号位检测溢出的方法,并画出电路图。 1、简述采用双符号位检测溢出的方法,并画出电路图。 符述采用单符号位检测溢出的方法。 2、符述采用单符号位检测溢出的方法。 什么是定点溢出?给出判断定点溢出的两种方法。 3、什么是定点溢出?给出判断定点溢出的两种方法。
(4)补码加减法流程 )
加 减 B+2-n → B C=A+B(mod2) ( )
其中A、 为补码表示的定点小数 其中 、B为补码表示的定点小数 B表示对 表示对B B+2-n → B表示对B的补码逐位取 末位加1 即求[ 反,末位加1。即求[-B]补
且A0=B0 A0≠C0 ? 否 结束
是 溢出