怎么将16位二进制数转换成BCD码的汇编语言程序

怎么将16位二进制数转换成BCD码的汇编语言程序,第1张

1、首先左移要转换的二进制码1位;  左移之后,BCD码分别置于百位、十位、个位;  如果移位后所在的BCD码列大于或念迅等于5,则对该值仔轮此加3;继续左移的过程直至全部移位完成,并检查每一列对应的bcd码是否

2、接着看信号列表。

3、然后二进制代码设计。

4、十进制代码。

5、桐春十六进制,最后就完成了。

注意事项:

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。

十进制整数(BCD)转换成二进制:

在数学中,我们都知道随便一个十进制数如5468,那么它的计算过程可以转换为:5468=5*1000+4*100+6*10+8,因此BCD码搭乱逗转成二进制数的算法就是:

abcd=a*1000+b*100+c*10+d。

这种算法是最常规的一种算法,里面需要用到乘法器以及加法器,这种实现方式比较耗费资源,下面梦翼师兄会介绍一种算法,这种算法需要用到加法和移位来完成BCD转二进制数的功能,从而尽可能的节约逻辑资源。

二进制码左移一位等于未左移的二进制码*2,例如有二进制码101001,转成十进制等于41,左移一位得到1010010,转成十进制等于82。

也就是说二进制码左移1位加上左移3位可以等效于二进制码乘以10。

用实例分析:十进制数29;

用BCD码表示:十位上的十进制数为2==BCD码表示为0010;个位上的十进制数9===BCD码表示为1001;所以总的来说十进制数29用BCD码表示为:00101001。

转换过程:把BCD码0010(十进制数为十位知卖上的2)右移4位(其实表示当作一个个位数,或陪旅者说单纯的数值),然后乘以10还原到十进制的权重(因为这个数本来表示的就是十进制数中的十位)。处理完十位上的数,接着处理个位上的数。

因为BCD码的权重和二进制的前四位权重是一样(2^n,n为位数),所以直接用前面的十位上的数加上它就可以了。

简单点分析:0010(十位上的2BCD码表示)×10+1001(个位上的9BCD码表示)=29的二进制数

C代码表示:#define BCD_TO_BIN(val)   ((((val) >>4) * 10) +  ((val)&15))。

扩展资料:

BCD码是用4位二进制数(各个位的权重分别为:8421,所以叫8421码)来表示一位十进制数。

这里的一位十进制数要特别说明下,一位十进制数只能是 0~9之间的一个数值。比如:6 就是表示一位十进制数6;66则是表示两位十进制数;666则是表示三位十进制数。

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。

相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

参考资料:百度百科-BCD码

void HextoBCD(u8 *pBuff,u8 len) //十六进制转为BCD码

{

u8 i,temp

for(i=0i<leni++)

{

temp=pBuff[i]/10

time[i]=pBuff[i]%10+temp*16

}

}

bcd码就是用二带袭冲进制数来表示常用的十蠢歼进制数。就是用四个位的二进制来表示一个二进制数。一个字节一共有八个位,它就可以表示两个bcd码。比如,0FH等于二禅租进制物15,用一个字节低四位来表示5,高四位来表示1合起来就是15H,不用转换两次的。

扩展资料

例如:

63÷10=6……3

即商是6,余数是

如果将商乘以16再加上余数,就是:6×16+3=99,其16进制数就是63H,即是十进制数63(16进制为3FH)的BCD码为63H。

如果在单片机中,程序这么写:char HEX,BCD;BCD=(HEX/10*16)+(HEX%10)

其中HEX存储十六进制数,BCD中存储的就是其BCD码。

参考资料来源:百度百科-BCD码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8244705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存