BCD码怎么转换成标准二进制形式?

作者&投稿:邗相 (若有异议请与网页底部的电邮联系)
二进制与BCD码之间的转换~

二进制编码的十进制数,简称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码。

通常我们默认的BCD码为8421码,即用4位二进制数来表示1位十进制数中的0~9这10个数码,从左到右的权为8、4、2、1。

以十进制37为例,进行转换:

3=2+1=(8421码)0011,7=4+2+1=(8421码)0111。

所以37转换成8421码为0011 0111。

扩展资料

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

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

BCD码的最高位二进制数是符号位,负数的符号位为1,正数为0。16位BCD码的范围为–999~+999。

BCD码没有单独的表示方法,而是借用了十六进制的表示方法,因此二者很容易混淆。通常用以下两种方法去判断:

1、看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示电梯楼层的译码器芯片的是BCD码。

2、看手册的规定,例如数据类型DATE_AND_TIME中的日期和时间值是BCD码,计数器的预设值PV和当前计数值CV_BCD为BCD码。

参考资料:

BCD码——百度百科

8421码——百度百科



bcd码就是0-9共10个数字,对应的二进制码就是0000-1001。如7对应0111;26对应0010 0110;456对应0100 0101 0110,其文件运行如图所示。

如果每位BCD码使用一个字节(8位),那么:

7对应0000 0111;26对应0000 0010 0000 0110;456对应00000100 00000101 00000110。

扩展资料

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码中,它是个非法编码。

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



转化标准二进制方法如下,直接用例子来回答:

实例分析:十进制数 29;

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

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

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

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

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

BCD码是用4位二进制数(各个位的权重分别为:8421,所以叫8421码)来表示一位十进制数。这里的一位十进制数要特别说明下,一位十进制数只能是 0~9之间的一个数值。比如:6 就是表示一位十进制数6;66则是表示两位十进制数;666则是表示三位十进制数。

扩展资料:

BCD码的特点:

1、8421编码直观,好理解。

2、5421码和2421码中大于5的数字都是高位为1,5以下的高位为0。

3、余3码是8421码加上3,有上溢出和下溢出的空间。

4、格雷码相邻的2个数只有一位不同。

BCD码的运算规则:

BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD码传送给运算器进行运算时,其结果需要修正。

修正的规则是:当两个BCD码相加,如果和等于或小于 1001(即十进制数9),不需要修正;如果相加之和在 1010 到1111(即十六进制数 0AH~0FH)之间,则需加 6 进行修正;如果相加时,本位产生了进位,也需加 6 进行修正。

这样做的原因是,机器按二进制相加,所以 4 位二进制数相加时,是按“逢十六进一”的原则进行运算的,而实质上是 2 个十进制数相加,应该按“逢十进一”的原则相加,16 与10相差 6,所以当和超过 9或有进位时,都要加 6 进行修正。

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



可以用加3移位法转换:

bcd码中只有0~9十进制数,但是在四位二进制中是16进制进1,因此在移位过程中要对二进制进行判断,当在移位之后的状态Qn+1大于9,要对Qn加6才可以。

例如:1000移位大于9加6为0001_0110,对应bcd码中的16。

也可以在移位之前进行判断,如果移位之前的Qn数据大于4,说明Qn+1会溢出,所以可以+3再进行移位,例如1000大于4,加3为1011然后再进行移位0001_0110,16和刚才结果是一样的。

简单的说,判断的目的是防止下一次移位,发生数据溢出的情况。

扩展资料:

1、BCD码的格式

计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。

组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010

2、BCD码的加减运算

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。

例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用\加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。

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



BCD码(也称为8421码)转二进制

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

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

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

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

扩展资料:

BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。

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

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

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




...128 Kbps ?它们三个的关系是怎么样的?怎么换算?
要理解这些东西,还需要说到音乐文件是怎么在计算机上存储的。请看: 让我们来看看一个很短的例子。要把自然界的模拟声音变成计算机存储的数字文件,需要进行模、数转换。如果按CD质量保存,所以你以44.1KHz的采样频率,立体声,每个采样值16比特的方式进行采样。44.1KHz意味着每秒钟有44100个采样值从你的声音卡(或输入...

怎么才能让U盘里的歌曲按照预先设置的顺序在车上播放
1、把U盘内的歌曲重新命名,在每首歌名前加数字但不加标点,如原名称“小苹果”,改成“1小苹果”,下一首改成“2XX”;2、同样重新命名,在每首歌名前加字母但不加标点,如原名称“小苹果”,改成“A小苹果”,下一首改成“BXX”,若歌曲太多,可用AA,AB,以此类推。注意 对于车载CD音响系统...

国际标准ascii码有几位啊?
ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。因为1位二进制数可以表示(21=)2种状态:0、1;而2位二进制数可以表示(22)=4种状态:00、01、10、11;依次类推,7位二进制数可以表示(27=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个...

千千静听怎么转换格式的?
使用千千静听转换歌曲的文件格式,方法是:1、在千千静听中打开需要转换的歌曲。2、在播放列表中,右键所需要转换的歌曲,如下图:3、选择格式,如:选择MP3,如下图:4、选择目标文件夹,即存储路径,最后点击立即转换。

请问如何把DVD - ISO格式的视频文件转化成MKV格式文件?
要把DVD ISO文件转换成MP4、MKV等格式文件,步骤如下:1.把DVD ISO文件解压(用WinRAR等压缩工具),或者用虚拟光驱软件(Daemon,Alcohol等)挂接为光驱。2. 使用格式工厂转换为MP4。(1)启动格式工厂,在任务分类中选择”光驱设备\\DVD\\CD\\ISO“,选择”DVD到视频文件“任务。(2)如果使用虚拟光驱进行转换...

用千千静听把cda转成mp3 怎么总出错呢?
1、必须指定目标文件夹,如不指定目标文件夹将把目标文件生成在源文件夹内,由于你是cd盘不支持文件写入,所以报错。2、由于CD播放时独占方式,如果正在播放CD,请先停止播放。

手表型号怎么看
每一块手表都有自己的型号,不同型号的手表都有自己品质及特点,当我们在购买手表时,我们往往会根据手表的型号来确定手表的一些参数,从而确定是否符合自己的购买标准。那么我们如何理解浪琴手表的型号呢?手表的型号在手表后盖和保修卡上是用一串编号来体现的。它的格式为:LA.BCD.E.FG.H。CD顺序号码...

dior是什么牌子
而衣标上Christian Dior Paris是最好的辨识方法。此外,Dior比较高端服饰系列的衣标的条码下会有很细的红线,据说是Dior的独创。CD:出现Dior的配件上,如眼镜镜架侧面、扣环、皮带、皮夹。Dior:挂在提环上,以DIOR四个字母串成钥匙圈,是“Lady Dior”皮包的标志。钻石格纹:Dior专用之钻石格纹,较...

知网论文重复率检测 引用部分要怎样标识才能被识别
对于非纸张型载体的电子文献,当被引用为参考文献时需在参考文献类型标识中同时标明其载体类型。本规范建议采用双字母表示电子文献载体类型:磁带(magnetic tape)——MT,磁盘(disk)——DK,光盘(CD-ROM)——CD,联机网络(online)——OL。以纸张为载体的传统文献在引作参考文献时不必注明其载体类型。4、...

dior标志含义?
)而衣标上ChristianDiorParis是最好的辨识方法。此外,Dior比较高端服饰系列(当然DIOR本身就是一个高端品牌,这里指的是高端里的高端)的衣标的条码下会有很细的红线,据说是Dior的独创。CD:这缩写常出现在Dior的配件上,如眼镜镜架侧面、扣环、皮带、皮夹。Dior:挂在提环上,以DIOR四个字母串成钥匙...

乌审旗15026763976: 微机原理实验:BCD码是怎么样转换为二进制的? -
盖品奥天: BCD码分压缩型和下压缩型两种,压缩型BCD码:1位BCD码对应4位二进制码,如:1对应为0001,2对应为0010,……8对应为1000,9对应为1001;非压缩型BCD码:1位BCD码对应8位二进制码,如:1对应为00000001,2对应为00000010,……8对应为00001000,9对应为00001001;

乌审旗15026763976: BCD码怎么转换成标准二进制形式? -
盖品奥天: BCD是十六进制,分别代表十进制中的11,12,13. 楼主把11,12,13按十进制转化二进制的方法转化就是.具体应该是除二取余数的方法吧.

乌审旗15026763976: 如何将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码...

乌审旗15026763976: 计算机数制转换 -
盖品奥天: BCD码(二到十进制编码)把十进制数的每一位分别写成二进制形式的编码,称为二进制编码的十进制数,即二到十进制编码或BCD(Binary Coded Decimal)编码.BCD码编码方法很多,通常采用8421编码,这种编码方法最自然简单.其方...

乌审旗15026763976: 单片机怎么把BCD码转换成二进制啊
盖品奥天: BCD码要转换成二进制,需要先转换为十六进制,再转换为二进制就很方便了,比如:BCD码:32H,转换为十六进制为:20H(3*10+2=32=20H),对应二进制为:00100000

乌审旗15026763976: 单片机:A中的压缩BCD转换为二进制 -
盖品奥天: 我只说说方法吧,先mov R0,a;把原数暂存于R0中 and a,#0fh; mov R1,a;低四位保存至R1 mov a,R0; and a,#0f0h; swap a;交换高四位与低四位 此时再把a中的数乘以10再加上R1中保存的数就可以了.只说了大致思路,具体的自己写吧.

乌审旗15026763976: 汇编程序中将BCD码转换成二进制码的程序如何写,初学者求高手指导 -
盖品奥天: 嘿嘿 俺来帮你解答 BCD码转换成二进制码的方法:1 可以按照按权展开公式: 将BCD码按照千位、百位、十位、个位展开计算 即 (BCD码的千位)*1000+(BCD码的百位)*100+(BCD码的十位)*10+(BCD码的个位) 上述式子之和即为转换后的二进制数. 呵呵 俺只提供给你一个算法 你可以按照上述算法编写一个BCD码转换成二进制码的子程序. 满意就选满意回答吧

乌审旗15026763976: BCD码的数值为96,那么它转化成二进制是多少?十进制是多少? -
盖品奥天: BCD码是用4位二进制数对应1十进制位数,BCD码的数值本身已是十进制.所以 二进制是10010110,十进制就是96.

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

乌审旗15026763976: 利用C语言 将BCD码转成二进制输出的程序 -
盖品奥天: #include #include #define INPUT_BCD_MAX_LENGTH 10 int main(void) { // char bcd[ INPUT_BCD_MAX_LENGTH ]; char *bin = NULL; char t_bin[ 6 ]; int i, j, q, r, t, bcd_len, bin_len; printf( "Please enter the decimal code: " ); scanf("%s", bcd)...

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