zoukankan      html  css  js  c++  java
  • 计算机乘法除法原理(原码)

    乘法:被分解为左移累加。

    除法:被分解为右移累减去,减法可以转换为加法。
    浮点数的运算:
    S x 2(^F) x M
    浮点数是原码表示法,S符号位,F阶码 + 127, M尾数舍弃前面的1(如果F<=-127则小数最前是0也要舍弃,后面补上0,F会变为-126)。
    F阶码用的表示法是偏移码(无符号整型表示,并不是书本说的移码,阶码加减运算的时候,应该用了寄存器处理,不是移码运算,因为位数都不够)。
    浮点数加减:阶码对齐; 尾数加减,处理溢出,规格化即可。
    浮点数乘除:无符号阶码偏移码加减运算,应该是转换为真值后,进行了有符号补码的运算,得到结果,而不是进行了移码的运算(因为移码运算得不到正确的结果);尾数进行整数乘除,得到结果处理溢出,规格化即可。
     

    计算机乘法除法原理(原码)

    标签: 

    计算机

     

    乘法

     

    除法

     

    原理

     

    原码

     

    it

    分类: 软件技术规范
    1.乘法
    由于计算机中,所有数值都是用2的N次方来表示的:2^n0+2^n1+2^n2+2^n3+2^n4.....
    因此x*y,(x)*(2^n0+2^n1+2^n2+2^n3+2^n4)=(x*2^n0)+(x*2^n1)+(x*2^n2)+(x*2^n3)+(x*2^n4)+......即(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+......

    用15(x)*13(y)来举例,15*13 为1111*1101
    a.首先y的最低位为1(2^0),x左移0位得到1111
    b.然后y的最低第二位为0,没有2^1存在,因此本次无运算(结果可以看作为0)
    c.然后y的最低第三位为1(2^2),x左移2位得到111100
    d.然后y的最低第四位为1(2^3),x左移3位得到1111000
    e.把a、b、c、d的结果相加1111+0+111100+1111000=11000011(195),该结果就是乘法的结果

    特别的,x*y中,如果y是2的N次方,因此相当于x右移N位。

    2.除法(加减交替法)
    x/y其实就是,x不断减y的过程。小学时候学的长长除法就是这个原理。
    用二进制的除法x/y,比十进制容易写,商不是0即是1,而且如果除数大于除数的1倍,商就是标记在另一个位上面了

    二进制除法x/y=0.1001/0.1011手工计算如下
                0.11  
           _______
    0.1001/0.1001
             10010(后面补0)
             -1011
            ------
               111(余数)
               1110(后面补0)
              -1011
            --------
                  1(余数)
                  
    设ri表示第i次运算后所得的余数,则:
    若ri>0,则商1,余数和商左移1位,再减去除数,即ri+1=2ri-y
    若ri<0,则商0,余数和商左移1位,再加上除数,即ri+1=2ri+y

    用85/6来举例,85/6=1010101/110
    a.101(0101)左移1位到第3位都小于110,因此商=000
    b.1010(101)左移四位是1010,比110大,商=0001,余数=1010-110=100(101)
    c.余数100(101)左移一位是1001,比110大,商=00011,余数=1001-110=11(01)
    d.余数11(01)左移一位是110,等于110,商=000111,余数=0(1)
    e.余数0(1)左移一位是01,小于110,商=0001110,余数=01

    因此85/6=1010101/110=0001110,即14,余数为最后的余数1
  • 相关阅读:
    POJ 3630 Phone List/POJ 1056 【字典树】
    HDU 1074 Doing Homework【状态压缩DP】
    POJ 1077 Eight【八数码问题】
    状态压缩 POJ 1185 炮兵阵地【状态压缩DP】
    POJ 1806 Manhattan 2025
    POJ 3667 Hotel【经典的线段树】
    状态压缩 POJ 3254 Corn Fields【dp 状态压缩】
    ZOJ 3468 Dice War【PD求概率】
    POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
    POJ 3735 Training little cats【矩阵的快速求幂】
  • 原文地址:https://www.cnblogs.com/mamamia/p/7760341.html
Copyright © 2011-2022 走看看