二进制小数乘法主要分为定点数乘法和浮点数乘法两类,具体方法如下:
一、定点数乘法(符号定点数)
原码相乘 - 符号位单独处理:符号相同得正,不同得负,数值为两数绝对值按无符号整数规则相乘。
- 位数对齐:整数部分位数相加(m+o),小数部分位数相加(n+p),结果共(m+o)+(n+p)位。
无符号整数乘法
- 按位运算:乘数与被乘数逐位进行AND运算,结果左移对应位数后累加。
- 移位处理:乘数右移时,部分积也右移一位,符号位保留一位。
结果划分
- 从低位到高位分割整数部分(m+o)和小数部分(n+p),得到最终结果。
二、浮点数乘法(符号补码表示)
符号处理
- 符号位单独处理:符号相同得正,不同得负,数值为两数绝对值按无符号整数规则相乘。
补码运算
- 转换为无符号数:去掉符号位后按无符号整数乘法规则计算。
三、示例
以定点数乘法为例:
计算 (0.1101 times 0.1011)(均为4位小数)
符号位:0×0=0(正数)
无符号乘法:按位运算后累加,结果为 (0.10001111)
划分位数:整数部分1位,小数部分7位,最终结果为 (0.10001111)(符号位已包含)。
四、注意事项
溢出处理: 结果位数超出硬件位数时需截断或进位。- 硬件优化