3.3二进制乘法运算3.3.1定点数一位乘法1.定点原码一位乘法假设:[X]原=XoXiX2...Xn[Y]原=Yo YiY2... Yn[X·Y]原=[X]原·[Y]原= (Xo @ Yo)l(Xo Xi X2... Xn) ·(Yo Yi Y2... Yn)计算机中如何实现呢?先以手工计算为例
3.3 二进制乘法运算 3.3.1定点数一位乘法 1.定点原码一位乘法 假设:[X]原=X0 X1 X2. Xn [Y]原=Y0 Y1 Y2. Yn [X·Y]原= [X]原· [Y]原 =(X0⊕Y0)|(X0 X1 X2. Xn ) ·(Y0 Y1 Y2. Yn ) 计算机中如何实现呢? 先以手工计算为例
例3.31X=0.1101. Y=0. 1011计算X·Y例: X原=0.1101,y厚=0.1011P=x·y(符号位单独处理上符号位:0.10001111
例3.31 X=0.1101, Y=0.1011 计算 X ·Y 例:x原 =0.1101,y原 =0.1011 P=|x|•|y|(符号位单独处理) 上符号位:0.10001111
手算0. 1101X0. 10111101部分积11010000+ 11010. 10001111问题:1)加数增多(由乘数位数决定)。2)加数的位数增多(与被乘数、乘数位数有关)
手算 0.1101 ×0.1011 1101 1101 0000 1101 0.10001111 部分积 问题:1)加数增多(由乘数位数决定)。 2)加数的位数增多(与被乘数、乘数位数有关)
改进:1.将一次相加改为分步累加。每求得一个相加数,就与上次部分积相加。2..将相加数左移改为部分积右移。3.部分积右移时,乘数寄存器同时右移,用乘数寄存器的最低位控制相加数同时最高位接收部分积右移出来的一位。例3.31X=0.1101, Y=0. 1011计算X·Y
改进:1. 将一次相加改为分步累加。每求得 一 个相加数,就与上次部分积相加。 2. 将相加数左移改为部分积右移。 3. 部分积右移时,乘数寄存器同时右移, 用乘数寄存器的最低位控制相加数, 同时最高位接收部分积右移出来的一 位。 例3.31 X=0.1101, Y=0.1011 计算 X ·Y
步数条件操作乘数部分积00. 0000.10111)+XCn=1+ 00.110100.1101右移00. 01101.1012)+XCn=1+ 00.110101. 0011右移00. 100111.103)+0Cn=0+ 00.000000. 1001右移00. 0100111.14)+XCn=1+ 00.110101. 0001111100. 1000[X] 原X[Y]原 = 0. 10001111
步数 条件 操作 部分积 乘数 00.0000 .1011 1) Cn=1 +X + 00.1101 00.1101 00.0110 1.101 2) Cn=1 +X + 00.1101 01.0011 00.1001 11.10 3) Cn=0 +0 + 00.0000 00.1001 00.0100 111.1 4) Cn=1 +X + 00.1101 01.0001 00.1000 1111 [X]原×[Y]原 = 0.10001111 右移 右移 右移