有关十进制整数(BCD)转换成二进制的电路设计!

作者&投稿:赫亲 (若有异议请与网页底部的电邮联系)
给定一个十进制数(整数或小数)如何转化为二进制和8421BCD码,以及给定8421BCD码如何转化为十进制;~

8421BCD码转化为十进制:
8421码一共四位 每位都是0或者是1 假设给出的码是1010 那么每位分别和和8421对应 可得
8*1+4*0+2*1+1*0=10(十进制) 再者 码1100 8*1+4*1+2*0+1*0=12(十进制) 就是四位和8421对应在进行相加
十进制数(整数或小数)转化为8421BCD码
75.4=(0111 0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5
十进制数(整数或小数)转化为二进制
整数除以2,商继续除以2,得到0为止
22 / 2 11 余0
11/2 5 余 1
5 /2 2 余 1
2 /2 1 余 0
1 /2 0 余 1
所以22的二进制是10110
小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。
0.8125x2=1.625 取整1,小数部分是0.625
0.625x2=1.25 取整1,小数部分是0.25
0.25x2=0.5 取整0,小数部分是0.5
0.5x2=1.0 取整1,小数部分是0,结束
所以0.8125的二进制是0.1101
十进制22.8125等于二进制10110.1101

每一个十进制数对应4位BCD码,(10000011)8421BCD转换成二进制数为1010011。
具体转换过程:10000011 BCD码对应的十进制数为83,然后再将83转换为二进制。用83依次除2,将余数逆向排序。83/2=41 余1,41/2=20 余1,20/2=10 余0,10/2=5 余0,5/2=2 余1,2/2=1 余0, 1/2=0 余 1。余数逆向排序得1010011。

扩展资料
8421 BCD码是用四位二进制码来表示一位十进制数。但是只能表示0~9的十进制数。
十进制数转二进制:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,最后将得到的余数进行逆向排序即可。
参考资料来源:百度百科-十进制转二进制
参考资料来源:百度百科-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码



二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符

二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 点击此处将给出十进制数和8421BCD编码的对应关系表。
1、BCD码与十进制数的转换
BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如:
75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5
注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。
例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。
又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 .
2、BCD码的格式
计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。
所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:
_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。
组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010
3、BCD码的加减运算
由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于
计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。
解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:
(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。
(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.
(3)低位修正结果使高位大于9时,高位进行加6修正。
下面通过例题验证上述规则的正确性。
用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95
用BCD码求91+83 用BCD码求94+7 用BCD码求76+45
两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。 实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。另外,BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计算机对二进制数运算处理,运算以后再将二进制数结果由程序转换为BCD码

有现成的芯片。

芯片(1)74LS154

:4-16线译码器,四位2进制数(4位BCD码编制)转换为16位2进制数

芯片(2)74LS138

:3-8线译码器,3BCD---转8位2进制数 

你可以去www.21ic.com上搜索这两个芯片的原理图。原理图太大了上传不了。



将 2 个 BCD 码转换成对应的二进制数;
并设计完成此功能的“逻辑电路”。
-------------
这两个 BCD 码,应该是“十位”和“个位”吧。
十位的,乘以 10,---可以用 283 实现。
再加上 个位的。 ---也可以用 283 实现。
不就行了? 一点难度都没有。

我的意思是你不可能找到比我找个答案更好的答案了,自己找个人或者去网上搜搜吧,200分提问这样的问题确实浪费,根本没有人去帮你解答,这是一件大工程,说实话,弄一篇这样的论文我都可以回答一两千的高分问题了,不要在这里等答案误事


计算机进制
一个十六进制数110,其中高位的1表示1个16^2,即256,低位的1表示1个16^1,即16,最低位的0表示0个16^0,即0。 可见,在 数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称这关系为数的 位权。 十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六...

将十进制字符串转换为十进制整数(改错题error07_5)
include <stdio.h> include <string.h> int main(void){ char str[80];int i, s;int repeat, ri;scanf("%d", &repeat);getchar();for(ri = 1; ri <= repeat; ri++){ i = 0;while((str[i] = getchar( )) != '\\n')i++;str[i] = 0;s = 0;for(i=0; str[i]!

进制转换
其数字以十进制表示,并以十进制形式运算。设计十进制机器比设计二进制机器复杂得多。而自然界具有两种稳定状态的组件普遍存在,如开关的开和关,电路的通和断,电压的高和低等,非常适合表示计算机中的数。设计过程简单,可靠性高。因此,现在改为二进制计算机。

八进制,十进制,十六进制之间的互换怎么算
②小数部分 方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。例:将十进制数796.703125转换为八进制数 解:先将这个数字...

c语言,将十进制正整数m转换成k(2<=k<=9)进制数,并按位数输出。_百度知 ...
for(i=0;m;i++)aa[i]=m%k;如果m=3 k=4 当i=0时 这时aa[0]=3;m=3\/4=0;结束,但是最后还有i++;i=1;所以最后的i++执行是多余的,所以要减1 输出aa[i-1]开始 void fun(int m, int k)int aa[20],i;for(i=0;m;i++){aa[i]=m%k;m\/=k;} \/\/答案少了大括号...

110100B是二进制还是十六进制,转换成十进制是多少?
110100B是二进制数,末尾的B是二进制英文Binaries的首字母。换算为十进制的方法如下:二进制数110100B总共有6位数,十进制转换时按权展开求和,即 110100B=1×2^5+1×2^4+0×2^3+1×2^2+0×2^1+0×2^0=52 因此110100B转换为十进制数为52 ...

printf("%d,%d%d\\n",a,b,c)后两个%d连着什么意思
printf中的""中的是输出格式,这个表示输出a,bc其中的abc按十进制整数输出

关于十进制数字 转换为二进制存储在电脑里
你现在应该不是学编程 应该是学子网掩码划分吧..子网掩码其实就是32个2进制组成.分4段.每小段就8位 7位变8位就是 不足8位补0 子网掩码最大是255 划分子网掩码的时候2进制不会到9位的 我也是刚学习.十进制整数转二进制:就是把该十进制数,用二因式分解,取余。以12为例,转为二进制 2...

计算机一级考试 机试 问题。
(2)C解析:二进制数转换成十进制数的方法是将二进制数按权展再:(01011010)2=0×27+1×26+0×25+1×24+1×23+0×22+1×21+0×20=90 (3)C解析:十进制整数转二进制的方法是除2取余法。“除2取余法”:将十进制数除以2得一商数和一余数。再用商除以2….以此类推。最后将所有余数从后往前排列。

...反码、补码、移码时,代表的十进制整数为多少?
原码 -0 反码 -127 补码 -128 移码 0 参考资料:http:\/\/www.ymzz.net\/NetClass\/bcxx\/cyy\/200605\/20060514134405.html

高安市15039345776: 如何将BCD数转换成十进制,2进制,16进制例如18 34 87 255 这些数字怎么转换啊 -
归丹:[答案] bcd码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,着十个数每个数都有自己的8421码: 0=0000 1=0001 2=0010 3=0011 4=0100 5=0101 6=0110 7=0111 8=1000 9=1001 举个例子: 321的8421码...

高安市15039345776: BCD码怎么转换成标准二进制形式? -
归丹: BCD是十六进制,分别代表十进制中的11,12,13. 楼主把11,12,13按十进制转化二进制的方法转化就是.具体应该是除二取余数的方法吧.

高安市15039345776: BCD码是将十进制数符转换成几位二进制 -
归丹: BCD码4位2进制表示一个数字,与十六进制的区别是只有0-9这几个数字,举个例子来说10的BCD码是0001 0000 23的BCD码 0010 0011

高安市15039345776: BCD码是怎样转换为二进制的? -
归丹: 任何“码”的内在形式本来就是二进制.对机器而言,不需要转换.所以“码转换二进制”是伪命题对人而言,可能要转换成二进制的“表现形式”便于人类阅读.BCD编码每4bit代表一个十进制数...

高安市15039345776: 将BCD数转换为二进制数的原理是什么,哪位帮我讲解一下? -
归丹: BCD是十进制数编码,用4位二进制数表示一位十进制数,而4位二进制数可以表示0-15共16个数,所以4位二进制数后面的6个数 1010 ,1011, 1100 ,1101 ,1110 ,1111 就不用了,或者说BCD码只是4位二进制数的前10个.

高安市15039345776: 有关十进制整数(BCD)转换成二进制的电路设计! -
归丹: 有现成的芯片. 芯片(1)74LS154 :4-16线译码器,四位2进制数(4位BCD码编制)转换为16位2进制数 芯片(2)74LS138 :3-8线译码器,3BCD---转8位2进制数 你可以去www.21ic.com上搜索这两个芯片的原理图.原理图太大了上传不了.

高安市15039345776: 给定一个十进制数(整数或小数)如何转化为二进制和8421BCD码,以及给定8421BCD码如何转化为十进制; -
归丹:[答案] 8421BCD码转化为十进制: 8421码一共四位 每位都是0或者是1 假设给出的码是1010 那么每位分别和和8421对应 可得 8*1+4*0+2*1+1*0=10(十进制) 再者 码1100 8*1+4*1+2*0+1*0=12(十进制) 就是四位和8421对应在进行相加 十进制数(整...

高安市15039345776: 十进制转换为二进制? -
归丹: 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并.

高安市15039345776: 汇编语言:将bcd码转换成二进制数 -
归丹: 好象是要先转成10进制再转2进制~~ 具体怎么做好象高教版的32微机原理里有讲~~ 太久没用都忘了`

高安市15039345776: C语言:将一个十进制的正整数转换为二进制数并输出结果. -
归丹: //十进制转二进制#include <stdio.h> main() { int a[100]={0},x,j,i=0; scanf("%d",&x); while(x) //while(x!=0) { a[i]=x%2; x=x/2; i++; } for(j=i-1;j>=0;j--) printf("%d",a[j]); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网