发布网友 发布时间:2022-04-24 00:57
共5个回答
热心网友 时间:2022-04-15 00:57
十进制整数(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码
热心网友 时间:2022-04-15 02:15
有现成的芯片。
芯片(1)74LS154
:4-16线译码器,四位2进制数(4位BCD码编制)转换为16位2进制数
芯片(2)74LS138
:3-8线译码器,3BCD---转8位2进制数
你可以去www.21ic.com上搜索这两个芯片的原理图。原理图太大了上传不了。
热心网友 时间:2022-04-15 03:49
二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符热心网友 时间:2022-04-15 05:41
我的意思是你不可能找到比我找个答案更好的答案了,自己找个人或者去网上搜搜吧,200分提问这样的问题确实浪费,根本没有人去帮你解答,这是一件大工程,说实话,弄一篇这样的论文我都可以回答一两千的高分问题了,不要在这里等答案误事热心网友 时间:2022-04-15 07:49
这个不难么,用一个大的case语句就可以完成了~~~~~