zoukankan      html  css  js  c++  java
  • 定点数乘法

    原码乘法:

      原码的手动乘法:就和小学学过的竖式乘法写法一致,从右到左,乘数每一位分别与被乘数相乘。

              1011

          x  1101

    -------------------

             1011

           0000

         1011

       1011

    ----------------

     10001111

    原码的一位乘法:

    原理:从传统竖式乘法里面可以看到,每次乘数只有一位与被乘数相乘。如果用乘数的最低位和被乘数相乘,再把它右移一位,就可以作为部分积,和下一位相乘后的结果相加。

    具体计算:

      符号位最后单独处理,绝对值参加乘法运算。该算法因为每次根据乘出的一位来计算位积,所以称为原码一位乘法。

    步骤:初始部分积为0,Yi为1;若Yi为0,部分积加|X|,累加结果右移一位,得到新部分积;(i依次为n n-1 n-2....)

    符号位异或运算。

    为什么要右移:对于乘数,最后一位已经用过了,没有价值,所以直接右移丢弃掉,剩下的空间刚好用来存储部分积右移的部分。换句话说,部分积可以视为在乘数左侧,每次右移挤占乘数空间

    例题:

      以+1011  *   -1101为例做一位乘法

      初始的部分积为0,0000,0表示正数,不参与计算。部分积实际为0000.                数据显示:0000 1101

      1)用乘数1101的最后一位1乘1011 并加上之前的部分积0000,结果为1011,

    部分积右移一位,挤占乘数1101的位置,乘数变成了1110,部分积变成0101           数据显示: 0101 1110

       2)用乘数1110的最后一位0乘1011,并加上部分积,结果为0101        数据显示: 0101 1110

    部分积右移,挤占乘数,乘数变成1111,部分积变成0010              数据显示: 0010 1111

      3)用乘数1111的新最后一位1乘1011,并加上部分积,结果为1101          数据显示: 1101 1111

    部分积右移,挤占乘数,乘数变成1111,部分积变成0110              数据显示: 0110 1111

       4)用乘数1111的新最后一位1乘1011,并加上部分积,结果为0001      数据显示: 0110 1111

    部分积右移,挤占乘数,乘数变成1111,部分积为1000            数据显示:1000 1111

    与乘数1111拼接

    最终结果为1,1000 1111                前面的1表示负数

    -------------

    补码一位乘法

    在计算机中用补码运算较为方便。补码乘法运算时,可以将补码的数值部分同原码一样直接做乘法,在根据乘数符号位做修正即可。

    在修正X*Y时,Y的符号位为0不用修正,Y的符号位为1 时减去X

    此外,补码的符号位可以直接参加运算,不用单独处理;并且他们需要两位符号位

    举例:

    X为+0.1011  Y为-0.1101

    转化为补码后,X为00.1011  Y为11.0011

    计算大致同上述步骤。由于Y的符号位为11,因此计算结果00.0010 0001要减去X补码,也就是加上-X补码

    实际结果为1.0111 0001

    转化为原码是-0.1000 1111

    转换为原码的话为-0.1000 1111

  • 相关阅读:
    使用 Log4Net 记录日志
    NuGet安装和使用
    .NET Framework 4 与 .NET Framework 4 Client Profile
    “init terminating in do_boot” Windows10 Rabbit MQ fails to start
    Ubuntu / Win7 安装db2 v10.5
    Win7下的内置FTP组件的设置详解
    c/s模式 (C#)下Ftp的多文件上传及其上传进度
    C#路径/文件/目录/I/O常见操作汇总
    C# 遍历指定目录下的所有文件及文件夹
    Mongodb主从复制 及 副本集+分片集群梳理
  • 原文地址:https://www.cnblogs.com/namezhyp/p/14159978.html
Copyright © 2011-2022 走看看