zoukankan      html  css  js  c++  java
  • 补码的加减及溢出判断、加法器

    补码的加减法:

    加法: 
    整数: [A]补 + [B]补 = [A+B]补 (mod 2^(n+1)) 
    小数: [A]补 + [B]补 = [A+B]补 (mod 2)

    减法: 
    整数: [A-B]补 = [A]补 + [-B]补 (mod 2^(n+1)) 
    小数: [A-B]补 = [A]补 + [-B]补(mod 2) 

    补码加法运算溢出判断三种方法:
    [方法一] 
    Xf、Yf分别两个数的符号位,Zf为运算结果符号位。
    当Xf =Yf =0(两数同为正),而Zf=1(结果为负)时,负溢出;
    当出现Xf =Yf =1(两数同为负),而Zf=0(结果为正),正溢出.
    [方法二](就是下文加法器里的溢出标志OF判断:OF=Cn (异或) Cn-1)
    Cs表示符号位的进位,Cp表示最高数值位进位,⊕表示异或。
    若 Cs⊕Cp =0 ,无溢出;
    若 Cs⊕Cp =1 ,有溢出。
    [方法三]
    用变形补码进行双符号位运算(正数符为00,负数符号以11)
    若运算结果的符号位为"01",则正溢;
    若结果双符号为10,则负溢出;
    若结果的双符号位为00或11,无溢出

    加法器:

    溢出标志OFOF=Cn (异或) Cn-1

    符号标志SFSF=Fn-1

    零标志ZF=1    当且仅当F=0

    进位/借位标志CFCF=Cout (异或) SUB  /   CF=Cout (异或) Cin

    做加法时,主要判断是否溢出

    无符号加法溢出条件:CF=1

    带符号加法溢出条件:OF=1  

    带符号溢出判断:  ( OF=1 )

    (1) 最高位和次高位的进位不同

    (2) 和的符号位和加数的符号位不同

  • 相关阅读:
    level trigger 与 edge trigger 的区别
    使用ifstream时碰到的一个小问题
    转一篇 sed one line
    select(poll)效率,与异步网络IO,AIO, libevent, epoll
    类的成员函数指针的使用
    awk 的OFS使用 小 tips
    一句话打通所有机器,小脚本
    usleep sleep函数会重置clock 的返回值
    qstore 的 chunk重构小记
    判断质数的方法
  • 原文地址:https://www.cnblogs.com/l20902/p/10610921.html
Copyright © 2011-2022 走看看