zoukankan      html  css  js  c++  java
  • 二进制数的补码及运算(2)

    本章均对整数进行操作,小数情况请先转化为整数并对其符号位。

    使用如下数据:


    1.加法

    正数+正数

    正数+负数

    负数+负数


    通过计算可以发现,补码的加法运算可以直接相加,但在有时会产生进位,因此在编写硬件电路时推荐将两个加数进行符号位拓展,拓展为位数较多数字的位宽,运算结果预先拓展为该位宽+1。事实上多拓展符号位队运算结果也不会产生影响,如下:
    注意原码的拓展原则是在符号位后补充0。经上述实验可知,符号位的拓展对运算结果没有影响。
    ps.补码的益处判定

    最高位进位与次高位进位相同——没有溢出
    最高位进位与次低位进位不同——有溢出


    2.减法
    减法不作赘述了,将被减数转化为其相反数的补码进行加法运算即可。
    3.乘法

    正数*正数


    
    注意不要忘记符号位。最后的位宽应该是7bit(115除去符号位的位宽)+5bit(23除去符号位的位宽)+1(符号位) = 13bit,有符号数运算时刻要记得符号位的处理。
    

    正数*负数

    最高位(符号位)的部分积符号位为1切取补码,这个用个简单的数来算吧

    
    负数*正数
    

    被乘数为负数(补码),每一个部分部分积都要符号位扩展


    
    负数*负数
    

    第一种方法,将以上两种 方法结合起来;

    第二种方法,直接转成正数再做运算。

    4.除法

    将除数转为分数进而转化为小数,再将小数转化为正数*2^n次方,之后做乘法后右移n位即可。





  • 相关阅读:
    换零钱问题
    candy
    动态规划之最长上升子序列
    宗成庆自然语言理解笔记 02 数学基础
    宗成庆自然语言理解笔记 01 绪论
    single-number
    single-number-ii
    菜鸟学开店—自带U盘的打印机
    菜鸟学开店—最简收银POS系统
    菜鸟学开店—电子称连接标签打印机
  • 原文地址:https://www.cnblogs.com/mingmingruyue99/p/7202020.html
Copyright © 2011-2022 走看看