欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

电脑基础构造(微视频教学) - 第三章 - 计算操作与乘法器详解 - 3.3 点数确定的乘法运算步骤

最编程 2024-08-01 08:33:21
...

3.3.1 原码一位乘法

1. 原码一位乘法运算方法

  1. 乘积符号的确定
    根据二进制原码的特点,乘积的符号与两个操作数符号间的关系为“异或关系”,即:
    Pf = x0 ⊕ y0
  2. 乘积的数值
    乘积的数值可以由乘数与乘数的绝对值之积求得。

手动计算二进制数乘积:

原码一位乘法算法流程图

逻辑右移,高位补0

原码一位乘:

先加法再移位。乘数的符号位不用参与运算,小数点在最后结果第一位后

计算出数值后,修改符号位

例题:

x = 0.1101,y = -0.1011,用原码一位乘法求 x*y。

由例题可知,用循环累加和逻辑右移操作实现了原码一位乘法;两个n位数参加乘法运算要进行n次加法和n次位移操作;注意加法运算可能出现局部溢出(图中第2、4次位移之前),但是这只是中间计算结果,运算完毕还要进行逻辑右移操作,右移时应该将进位位移入部分积的最高位

每次只利用乘数y中的1位来计算位积,最终需要将n个位积全部累加起来得到乘积,这种方法称为原码一位乘法

3.3.2 补码一位乘法

2. 补码一位乘法的算法

  1. 乘数采用单符号位,末位增设附加为yn+1,初值为0
  2. 利用yn+1与yn的差值判断各步的具体运算,差值为1,累加上[x];差值为0,累加上0;差值为-1,累加上[-x]。累加完成后需要进行算术右移的操作,初值为0。
  3. 按照上述算法进行n+1次累加操作,n次右移操作即可完成乘积运算。
  4. 补码乘法中,符号位参与运算,不需要单独计算符号位。

补码一位乘法算法流程图

进行n次(n为乘数的位数)加法和位移操作,最后在多来一次加法操作。

补码一位乘法:每次加法可能 +0、+[x]、+[-x]

yn+1 - yn = 0,+0

yn+1 - yn = 1,+[x]

yn+1 - yn = -1,+[-x]

每次位移为补码的算术右移,符号位不变,最高位根据符号位补位,符号位为1,补1,符号位为0,补0

符号位参与运算

符号位不用单独进行确定

yn+1初始值为0,后面运算过程中的值为前面移过来的数

多了一位附加位,其他数也要多一位数字

例题:

[x] = 1.0111,[y] = 1.0011,求 [x*y]