王凯-eecs分享 http://blog.sciencenet.cn/u/eecs

博文

硬件实现两个无符号数相加时,结果是否溢出的判断方法

已有 7454 次阅读 2010-4-21 12:30 |个人分类:文章专区|系统分类:科研笔记|关键词:学者| 判断, 硬件, 无符号, 溢出

这里讲用硬件如何实现两个无符号数相加时,结果是否溢出的判断方法。
假设两个加数为A和B,和为C,即A+B=C,其中A、B、C都是n位的,假设溢出位为o。

方法1:o=(A[n-1]&B[n-1])|(((A[n-1]&(~B[n-1]))|((~A[n-1])&B[n-1]))&(~C[n-1]))
使用的时候,通过组合电路生成C和o,然后将C和o寄存。
这种方法适用于硬件中没有全加器只有半加器的情况。
方法1指出溢出的条件为:当A、B的最高位为1时,和溢出;当A和B的最高位有一个为1时,当C的最高位为0时溢出。
证明:假设A的最高位为1,B的最高位为0,则A的取值范围[0,2n-1-1],B的取值范围[2n-1,2n-1]。那么A+B的取值范围为[2n-1,2n+2n-1-2],当A+B的值位于[2n-1,2n-1]时,没有溢出,C的最高位肯定为1;当A+B的值位于[2n,2n+2n-1-2]时,溢出,C的最高位肯定为0(因为数值范围[2n,2n+2n-1-1]的次高位,也就是C的最高位都为0)。

方法2:当硬件中有全加器时,将C扩展为n+1位,则o=C[n]。

方法3:当C<B或者C<A时,肯定就溢出了。



https://m.sciencenet.cn/blog-432545-314459.html

上一篇:Communication Characteristics ... Scientific Applications ... Cluster
下一篇:在Simics里用event实现时钟的一些特点

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-17 15:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部