C语言4位BCD码加法器,bcd码加法器

BCD码,全称为二进制编码十进制数,是用4位二进制数表示1位十进制数的方法。8421码是最常见的BCD码类型,其每一位的权重分别为8、4、2、1。在会计系统和其他需要高精度计算的场景中,BCD码被广泛使用。BCD码的加法运算需要考虑进位和修正规则,如超过10则需加6。此外,该文还展示了一个使用VHDL语言实现的BCD码加法器的代码示例。
摘要由CSDN通过智能技术生成

BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。

这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/[10!*(16-10)!]等于8008种方案。常用的BCD代码列于末。

BCD码加法器

在计算机内部,出于存储和计算方便的目的,采用基2码对十进制数进行重新编码,最少需要基2码的位数为log210,取整数位4 ,4位基2码有16种表示方法。

十进制数的几种4位编码

0abdb684cbfb3fe1130db7374fded747.png

8421码又称BCD码,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的1都表示一个固定数值,将每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位的1分别表示8、4、2、1,所以将这种编码称为8421码。每一位的1代表的十进制数称为这一位的权。8421码中每一位的权是固定不变的,它属于恒权代码。

在计算机内部实现BCD码之间的算术运算要复杂一些,即在某些情况下,对加法运算的结果进行修正。修正规则如下:

(1) 若两个8421码数相加之和等于或小于1001,不需修正。

(2) 若相加和在10-15之间,一方面应向高位产生进位,本身还要进行加6修正,进位是在加6修正时产生的。

(3) 若相加之和在16-18之间,向高位进位会在相加过程中自己产生,对本位还要进行加6修正。

实验代码使用vhdl语言:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY bcd IS

PORT( a : UNSIGNED(4 DOWNTO 0);

b : UNSIGNED(4 DOWNTO 0);

c : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)

);

END bcd;

ARCHITECTURE adding OF bcd IS

SIGNAL sum : STD_LOGIC_VECTOR(4 DOWNTO 0);

SIGNAL co : STD_LOGIC;

SIGNAL add : integer RANGE 0 TO 31;

BEGIN

add 《= conv_integer(a+b);

co 《= ‘1’ WHEN add》9 ELSE

‘0’;

sum 《= a+b+6 WHEN co=‘1’ ELSE

a+b;

c 《= sum;

END adding;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值