zoukankan      html  css  js  c++  java
  • 二进制减法的实现

    减法的基本运算过程:

    在求253-176的过程中,个位由于3小于6,需要从十位借一位,之后用13-6得到7,十位4-7,需要从百位借位,14-7得到7,最后的结果为77

     

    避免借位的减法:

    如果我们用十进制中的最大数来减,这样就可以不用借位了,上一步的求解过程就可以分解为如下:

    253+(999-176)-999

    1076-999

    这时,发现还是需要借位,那如果能够减去十进制中的最小数,就不需要借位了

    253+(999-176)+1-999-1

    即为253+(999-176)+1-1000=1077-1000

     

    值为负数的减法:

    176-253,可以翻转之后值取反,为了统一,我们还是按照上面的思路来

    176+(999-253)-999

    922-999

    如果按照上面来走,即为922-999+1就不对了,通过观察,我们发现999-922刚好不用借位,只需要值求反即可

     

    二进制的减法:

    11111101-10110000

    同理,我们求减数的1的补码(十进制中,用9减去,即为9的补码),减数的1的补码为11111111-10110000位01001111,可以看到,二进制的补码即为1变0,0变1

    因此,二进制的补码也可以叫做反码

    之后,我们被减数+反码,即11111101+01001111=101001100

    之后,结果加1,在减去(11111111+1),(101001100+1)-100000000=01001101

    总过程如下:11111101+(11111111-10110000)+1-(11111111+1)

    八位二进制减法:

    本例只适用于值为正数的结果

    如果被减数大于减数,那么结果肯定大于0,如果在加一个全为1的八位二进制后,必然会多出一个第九位,而刚好我们最后要减去一个第九位为1的其他全为0的二进制

    这样,我们只需要舍弃第九位即可,因为我们是八进制计算器,因此第九位溢出被去掉,结果刚好为减法的结果

    因此,八位二进制减法简化为如下步骤:

    1.减数取反

    2.被减数+减数的反码

    3.结果再加1

     

     

     

      

  • 相关阅读:
    封装、权限修饰符、包、构造器
    从Discuz!NT v2.0扣出来的生成静态页面的方法
    C#中struct与class的区别
    Asp.Net中虚拟文件系统的使用
    C#生成中文验证码
    C#导入Excel表
    IIS5、IIS6、IIS7的ASP.net 请求处理过程比较
    如何保证Session值不丢失
    C#抽象类与接口的区别
    C#实现DES加密解密
  • 原文地址:https://www.cnblogs.com/monkey6/p/10488755.html
Copyright © 2011-2022 走看看