C程序设计——二进制定点数加法的硬件实现

计算机科学把小数点位置固定的数字,叫做定点数。相对的,把小数点位置不固定的数,叫做浮点数。

因为整数做加、减、乘、除运算时,不论参与运算的数字还是运算结果,小数点都在最右边,因此大多数情况下,定点数指的是整数。

计算机定点运算的:加法、减法、乘法都是以加法器为基础的,且加法器逻辑较简单,所以这里拿出来重点讲一下。关于除法器,我当年《组成原理》没学好,所以印象不深刻。

二进制加法运算,改造为逻辑运算

前面我们讲过二进制的加法:

0 + 0==0\\0+1==1\\1+0==1\\1+1==10

我们可以把上述式子改造成如下样子,等号左边有三项,分别是:进位位:C_{n-1};加数A_{n};另一个加数B_{n}。等号右边是两项:进位位C_{n},和加法结果S_{n}

0 + 0 + 0==00\\0+0+1==01\\0+1+0==01\\0+1+1==10\\1 + 0 + 0==01\\1+0+1==10\\1+1+0==10\\1+1+1==11

分析上面的式子,我可以得出如下表格:

输入项输出项
C_{n-1}A_{n}B_{n}C_{n}S_{n}
00000
00101
01001
01110
10001
10110
11010
11111

于是我们可以得出结论:

当输入项中有奇数个 1 时,S_{n} 为1,写成算式就是

 S_{n} ==( ! C_{n-1} &! A_{n} & B_{n} )|( ! C_{n-1} &A_{n} & ! B_{n} )|( C_{n-1} &! A_{n} & ! B_{n} )|( C_{n-1} &A_{n} & B_{n} )

当输入项中,任何两个为 1 时,C_{n}为 1,写成算式就是

C_{n} == (C_{n-1} & A_{n} ) | (A_{n} & B_{n}) | (C_{n-1} & B_{n})

等将来你学到《离散数学》时,就会学到:

A ^ B == (A & ( !B )) | ((!A) & B

于是 S_{n}  就可以用异或来表示:

S_{n} == C_{n-1} ^ A_{n} ^ B_{n}     

二进制加法的逻辑运算改造为硬件电路

把上面的式子中,与运算替换成与门,或运算替换成或门,非运算替换成非门,就可以得到一个可以计算一位二进制加法的全加器,把多个全加器级联起来,就可以实现多位二进制加法,如下图,是一个四位二进制加法的全加器:

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十三香炖猪肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值