美文网首页单片机
定点数的原码补码乘法

定点数的原码补码乘法

作者: Rumbles | 来源:发表于2018-03-05 20:52 被阅读173次

定点乘法运算之原码一位乘法

原理:我们手工进行乘法运算的时候,是通过y从右往左每一位都和x相乘,(乘完一次就往前缩进一个数位)然后把结果相加得到的~机器也是这样运算哒~不过机器为了节约空间,毕竟按照手算的方法那样两个n位相乘最后可能会需要2n的长度空间才能得到结果,计算机是采用把每次用y的一位和x相乘的结果(叫做部分积)累加后右移一位,再处理y当前位的下一位的

举例说明:
比如x = 0.1101  ,y = 0.1011

1、先把部分积设为初始值0(长度扩展到和x相同),即

00.0000
y的最后一位是1,所以要加上x的绝对值:
00.0000 + 00.1101 = 00.1101
右移1位,前面补0,变成了00.01101
 

2、好啦,下面处理y的倒数第二位,还是1,继续加x的绝对值:

00.01101 + 00.1101 = 01.00111
别忘记右移1位,前面补0,这样就变成了00.100111
 

3、y倒数第3位是0,只要加0就好了(加0的结果还是本身啊。),所以还是:00.100111

既然加了0,别忘记右移一位哦,所以变成了00.0100111
 

4、y还剩最后一个位(也就是第一位)没处理啦,第一位是1哦,那就加上x的绝对值:

00.0100111 + 00.1101 = 01.0001111
别忘记右移一位!所以最后结果是 00.10001111~~~
嗯好啦,这就是最后结果~~不过双符号位就变成一个0就好咯,也就是最后结果为0.10001111~~~

设置寄存器:
A:部分积累加和,乘积的高位
B:存放被存数
C:   存放乘数 还有低位

参考:
http://blog.csdn.net/baidu_31657889/article/details/53559471

定点乘法运算之补码一位乘法

原码乘法的主要问题是符号位不能参加运算,单独用一个异或门产生乘积的符号位。故自然提出能否让符号数字化后也参加乘法运算,补码乘法就可以实现符号位直接参加运算。
比较法:
设置寄存器:x = -0.1101  y=-0.1011  计算:【xy】补
A:部分积累加和,乘积的高位
B:乘数的补码  x补 = 11  0011
-B:-X补 = 00 1101 
C:   存放乘数 还有低位 y补 =  1.0101

比较yn和 yn+1

00  A右移一位 也就是成1/2
01   A+x补  右移一位
10  A+-X补 右移一位
11   A右移一位

       A                C               Cn+1

  00  0000          10101     0                   10   A+-X补 右移一位
+00  1 1 01 
  00  1 1 01         10101       0          计算和 并且右移

  00   0110          11010       1          01       +x补  右移一位
+11    0011
  11    1001         1 1010                        右移
  11    1100         11101          0          10    A+-X补 右移一位

+00  1101 
1 00  1001         11101         0                   右移  舍弃1

  00   0100         11110         1          +x补  右移一位
+11    0011
   11    0111          11110         1        右移
   11    1011          11111         0

校正  10    +-X补 右移一位
 +00  1101 
1  00  1000         11111       0          舍弃1  低位留4位

= 00 1000  1111

=+0.10001111
校正法:

完整参考:
http://blog.csdn.net/kai8wei/article/details/44308557

相关文章

  • 定点数的原码补码乘法

    定点乘法运算之原码一位乘法 定点乘法运算之补码一位乘法 完整参考:http://blog.csdn.net/kai...

  • 二进制乘法运算

    定点数一位乘法: 1.定点原码一位乘法 两个原码数相乘,其乘积的符号为相乘两数的异或值(同号为+,异号为-),数值...

  • 定点数的原码补码除法

    原码的恢复余数/不恢复余数的除法参考:http://www.diangon.com/thread-10781-1-...

  • 为什么8位有符号定点数的表示范围是-128~127?

    本文写作时长3小时 计算机中,定点数的表示法有三种:原码,反码,补码。99%的计算机使用补码表示。 由于无符号定点...

  • Java中的非运算~

    涉及到的概念:原码、补码涉及到的公式: (1)正数的原码 = 补码;(2)负数的 补码 = ( 原码 - 1 )再...

  • 原码、反码、补码和移码

    书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...

  • 软件测评师做题技巧

    第一类补码,反码,原码 正数:原码=反码;补码=原码负数:反码=原码求反;补码=反码+1 第二类用例概率的计算 测...

  • 计算机为什么要使用原码、反码、补码

    1. 什么是原码、反码、补码 先看一个例子: +1和-1的原码、反码、补码的表示 原码、反码、补码的计算方式如下:...

  • 2018-10-22 Python31 原码、反码、补码

    原码、反码、补码 1)如何计算补码?规则: 正数:原码 = 反码 = 补码负数:反码 = 符号位不变,其他位取反补...

  • 位运算

    1.原码、反码、 补码正数的原码、反码、 补码都一样 正数以原码存储在计算机负数 以补码存储在计算机 例...

网友评论

    本文标题:定点数的原码补码乘法

    本文链接:https://www.haomeiwen.com/subject/minnxftx.html