整数转换BCD码 点击:7343 | 回复:8



焦荔

    
  • 精华:0帖
  • 求助:4帖
  • 帖子:18帖 | 611回
  • 年度积分:0
  • 历史总积分:3321
  • 注册:2006年11月26日
发表于:2011-12-29 09:09:41
楼主
常常在看PLC的资料时,有关于转换指令,就是整数转换BCD码是如何转换的,相对应的计算公式是什么?同行指点一下吧,谢谢



dianqisu

  • 精华:5帖
  • 求助:0帖
  • 帖子:23帖 | 804回
  • 年度积分:1
  • 历史总积分:9138
  • 注册:2008年12月19日
发表于:2011-12-29 11:00:17
1楼

呵呵, BCD 用四位二进制来表示10进制的数据,范围是0-9999   直接可以在开始-菜单-附件-计算器 用16进制的格式来转换。

青岛黄工

  • [版主]
  • 精华:3帖
  • 求助:54帖
  • 帖子:108帖 | 4776回
  • 年度积分:0
  • 历史总积分:24297
  • 注册:2007年4月02日
发表于:2011-12-29 11:23:56
2楼
其实开发PLC的人只是把这个计算公式封装成具体的PLC编程指令,方便我们调用,如果你要实现自己去写这样的指令,BCD码:用二进制表示的十进制,如0110 0010就是62,你可以首先取出高位,转换成十进制乘以权数,依次类推就可以了。

玻璃的心

  • 精华:30帖
  • 求助:2帖
  • 帖子:962帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2011-12-29 14:09:35
3楼

     BCD码又称8421码,是一种将每一个10进制数位用4位二进制数表示的计数方式,其数据的表示范围是:0到9999.所谓的8421指的是:1000,这个表示的是8;0100表示的是4;0010表示的是2;0001表示的是1;相应地:1001表示:8+1=9;之类的,其它以此类推。比如像青岛黄工说的10进制的62,我们可以看到6表示为:0110,2表示为:0010,那么62的BCD码表示就为(62)十进制=(0110 0010)BCD码制。

    但是值得注意的是,这个转换成的BCD码不是二进制数,如不能通过将(0110 0010)BCD码制通过二进制的方式转换成十进制,因为这个是一种特殊的计算机码制。

    对于要将形如(01001110001)BCD码制转换成十进制,我们一般是从低位到高位,每四位划分一次,高位不够四位可以补0的。如本例,可以划分为:(010 0111 0001)BCD码制=(271)十进制码制。

今生缘

  • [版主]
  • 精华:43帖
  • 求助:20帖
  • 帖子:4740帖 | 10148回
  • 年度积分:75
  • 历史总积分:111144
  • 注册:2011年3月02日
发表于:2011-12-29 15:24:27
4楼
引用 玻璃的心 的回复内容:     BCD码又称8421码,是一种将每一个10进制数位用4位二进制数表示的计数方式,其数据的表示范围是:0到9999.所谓的8421指的是:1000,这个表示的是8;0100表示的是4;0010表示的是2;0001表示的是1;相应地:1001表示:8+1=9;之类的,其它以此类推。比如像青岛黄工说的10进制的62,我们可以看到6表示为:0110,2表示为:0010,那么62的BCD码表示就为(62)十进制=(0110 0010)BCD码制。    但是值得注意的是,这个转换成的BCD码不是二进制数,如不能通过将(0110 0010)BCD码制通过二进制的方式转换成十进制,因为这个是一种特殊的计算机码制。    对于要将形如(01001110001)BCD码制转换成十进制,我们一般是从低位到高位,每四位划分一次,高位不够四位可以补0的。如本例,可以划分为:(010 0111 0001)BCD码制=(271)十进制码制。



wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2011-12-29 19:05:57
5楼

      BCD码又称8421码,是一种将每一个10进制的数用4位二进制的数来表示的记数形式,一个字节有8位,可容纳2位BCD码数,字节的低4位表示个位BCD码数,高4位表示十位的BCD码数。每4位的有效值(1)由低到高分别表示为1、2、4、8(对个位),10、20、40、80(对十位)....

     整数通常是以16进制(即2进制)数的形式存放在存储器内,将整数转换为BCD码计算思路是这样:将原整数存放在M1区,M2为BCD码存放区,将M2清0,如最大整数<10000,则M2选用一个字存储器就够,计算过程是:先判断M1是否大于10进数8000(转算16进制数为1F40),如大于,用M1值 - 1F40,将差-->M1,M2加 1 ,如小于,不作减运算,接着将M2左移一位,再判断M1是否大于10进数4000(转算16进制数为0FA0),如大于,用M1值 - FA0,将差-->M1,M2加 1 如小于,不作减运算,接着将M2 左移一位.....接着按同样判断处理过程,判断2000、1000、800、400、200、100、80、40、20、10,判断完10后,将M2左移4位,再将M1或到M2中,此时的M2即为转换BCD码数。

hbwhwsy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2010年9月06日
发表于:2012-10-22 00:44:29
6楼

谢谢各位讲解,特别是以四位为一组划分解释通俗易懂。

Acc

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2016年10月21日
发表于:2016-10-21 20:40:17
7楼

Thank you!感谢你的帮助,希望我还能帮助他人解决疑惑

dingchunjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 18回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2008年8月29日
发表于:2016-10-24 13:17:31
8楼

    BCD码又称8421码,是一种将每一个10进制数位用4位二进制数表示的计数方式,其数据的表示范围是:0到9999.所谓的8421指的是:1000,这个表示的是8;0100表示的是4;0010表示的是2;0001表示的是1;相应地:1001表示:8+1=9;之类的,其它以此类推。比如像青岛黄工说的10进制的62,我们可以看到6表示为:0110,2表示为:0010,那么62的BCD码表示就为(62)十进制=(0110 0010)BCD码制。

    但是值得注意的是,这个转换成的BCD码不是二进制数,如不能通过将(0110 0010)BCD码制通过二进制的方式转换成十进制,因为这个是一种特殊的计算机码制。

    对于要将形如(01001110001)BCD码制转换成十进制,我们一般是从低位到高位,每四位划分一次,高位不够四位可以补0的。如本例,可以划分为:(010 0111 0001)BCD码制=(271)十进制码制。



热门招聘
相关主题

官方公众号

智造工程师