计算机组织与结构【7 二进制编码的十进制数运算】

本文详细解析了如何使用二进制编码进行十进制数的加减运算,特别介绍了NCBD码的应用,涉及进位规则、补码处理和计算技巧。通过实例说明了如何通过十六进制进位来实现十进制加法,并探讨了减法中的符号处理和进位策略。
摘要由CSDN通过智能技术生成
图片来源:南京大学软件学院COA课程PPT
©author:zzb

7 二进制编码的十进制数运算

NCBD码用于解决精度和范围之间的矛盾,但代价是数字位数过多image-20210914180115014

image-20210915155218952

加法

image-20211012165334270

  • 对发生10进位的要补上6,如1010为十进制的10,补上0110,就利用16进制的进位实现了十进制的进位

  • 对于红色1,是加法本身已经超过16,发生了进位到前面一位,同样要加6,补上因为进位而丢失的6

  • 即发生了16进制的进位或者值超过9,那么都需要进行补6操作(其中发生16进制的进位,会出现上面红色的1,这时候补6,一定不会再发生进位.值超过9,不会出现红色的1,但补6后仍然会发生16进制的进位,因此还是会产生红色的1,即两种情况都会进一位到高位)

image-20211012165939633

如果要超过10,第4位必须是1,第2和第3位中至少有一个是1,因此会有上面的两个与门

两个与后的结果再和高位进位一起通过或门,这样就有3种情况会出现满10进位了,也就要加上0110,即6,所以C4后面有连出两条线给S2,S1

此外只要判断一次就可以了,因为即使是最大的结果19(9+9+1(1来自前一位的进位))加上6后,结果是25,25-16=9,结果9并不会再进位

减法

image-20211012172909448image-20220106114717172

这里原理和原码计算一样,但是把2n改成10n,9999……-x+1

先取反再加10和先加6后取反是一样的,均可倾向于先各位加6再取反

如果不够减10n,那么就提个负号出来,使得第一个数的符号位变反,即res-10n变成-(10n-res),这样用取反加1表示即可

如果够减10n即产生了高位的进位,那么舍弃进位即可,符号取第一个数的符号

image-20211219100203218

总结

image-20211219100209577

[外链图片转存中…(img-4M2Nc7wG-1656554644871)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值