BCD码的表示方法

BCD码的表示方法(没有单独的表示方法,只是用二进制表示,和十六进制更不同(有时候为方便暂且用十六进制形势,绝对不能理解为十六进制中特殊的一些数(无10以上的字母表示)))

BCD是什么?

用二进制数来表示十进制数的表示方法。

BCD有两种形式,pack BCD, unpack BCD

1.pack BCD,压缩的BCD码

它是一种用四位二进制数表示十进制数. 首先是用四位二制数表示个数,然后用四位二进制数表示十位, 然后百位...。

比如:251需要三个四位二进制数表示。 1表示为0001;5表示为0101;2表示为0010.

最后251的BCD数据表示为0010 0101 0001.

2.unpack BCD.非压缩BCD

非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。

ASCII和BCD码对照表:

十进制数字 ASCII码 压缩BCD码 非压缩BCD码

0

0011 0000 0000 0000 0000
1 0011 0001

0001

0000 0001
2 0011 0010 0010 0000 0010
3 0011 0011 0011 0000 0011
4 0011 0100 0100 0000 0100
5 0011 0101 0101 0000 0101
6 0011 0110 0110 0000 0110
7 0011 0111 0111 0000 0111
8 0011 1000 1000

0000 1000

9 0011 1001 1001

0000 1001

来源:http://www.cublog.cn/opera/showart.php?blogid=15478&id=83640

BCD码:
  BCD(Binary Coded Decimal)是用二进制编码表示的十进制数(见表3.3),十进制数采用0~9十个数字,是人们最常用的。在计算机中,同一个数可以用两种BCD格式来表示:①压缩的BCD码 ②非压缩的BCD码

  压缩的BCD码:
  压缩的BCD码用4位二进制数表示一个十进制数位,整个十进制数用一串BCD码来表示。例如,十进制数59表示成压缩的BCD码为0101 1001,十进制数1946表示成压缩的BCD码为0001 1001 0100 0110。

  非压缩的BCD码:
  非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。例如,十进制数78表示成压缩的BCD码为0000 0111 0000 1000。

  从键盘输入数据时,计算机接收的是ASCII码,要将ASCII码表示的数转换成BCD码是很简单的,只要把ASCII码的高4位清零即可。

ASCII和BCD码
十进制数字 ASCII码 压缩BCD码 非压缩BCD码 
0 0011 0000 0000 0000 0000 
1 0011 0001 0001 0000 0001 
2 0011 0010 0010 0000 0010 
3 0011 0011 0011 0000 0011 
4 0011 0100 0100 0000 0100 
5 0011 0101 0101 0000 0101 
6 0011 0110 0110 0000 0110 
7 0011 0111 0111 0000 0111 
8 0011 1000 1000 0000 1000 
9 0011 1001 1001 0000 1001 
void BcdToAscii (char *ascii_buf, const BYTE *bcd_buf, int len)
{
int i;
char ch;

for (i=0; i {
if (i & 1) ch = *(bcd_buf++) & 0x0f;
else ch = *bcd_buf >> 4;
ascii_buf[i] = ch + ((ch > 9)? 'A'-10 : '0');
}
}

来源:http://xxcom.blogchina.com/

BCD码的表示方法(没有单独的表示方法,只是用二进制表示,和十六进制更不同(有时候为方便暂且用十六进制形势,绝对不能理解为十六进制中特殊的一些数(无10以上的字母表示)))相关推荐

  1. 将BCD码转化成10进制数

    1:目的 将BCD码转化成10进制数,并按照低位到高位的形式组合在一起.例如0x23和0x45 转化成 十进制4523 2:实现 /********************************** ...

  2. 16进制数转化为bcd码的方法

    单片机设计中经常进行数制之间的转换,int类型数据可以存放65535以下的数. 转化为bcd码用以下方法: unsigned int hexresult; //待转化的16进制数: unsigned ...

  3. 内存中有两个4字节以压缩的bcd_【汇编程序】循环程序设计方法 求A和B两个4字节BCD数之和 他们在内存中以压缩BCD码形式存放...

    ;循环程序设计方法 求A和B两个4字节BCD数之和 他们在内存中以压缩BCD码形式存放 ;低字节在前 高字节在后 要求结果以同样形式存放以SUM的单元中 data segment a db 44h,3 ...

  4. 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)

    目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...

  5. c++ 转bcd码_BCD码转10进制字符串(C#、C++)

    C# /// /// 将bcd字节数组转为10进制字符串 /// /// bcd码字节数组 /// 返回转换后的10进制字符串 public string BCDCodeToDecimalString ...

  6. c语言字节BCD码转换成10进制,如何将BCD码转换成10进制码

    今天有人在问我BCD码如何转换成10进制码的问题,其实很简单 BCD 的表示法是 用4个二进制位来表示 一个十进制位,也就是一个字节能够表示2个十进制数位,这是一种压缩的十进制表示方式,应用很广,最常 ...

  7. 十进制转BCD码的方法

    今天发现一个十进制转BCD码的好方法,赶紧记录一下以备后用 举例: 要把一个3位的十进制数635转成BCD码(H)表示: 635(D) / 100(D) = 6(D) 6 * 16 2 = 1536( ...

  8. 【微机汇编语言学习笔记(四)】十进制数的ASCII转换为BCD码

    目的:从键盘输入五位十进制数的ASCII码,存放与3500H起始的内存单元中,将其转换为BCD码,再分别存入350AH起始的地址单元内.若输入不是十进制的ASCII,则对应存放结果的单元内容为&quo ...

  9. 汇编语言(二)之将十进制数的ASCⅡ码转换为BCD码

    题目要求 从键盘输入五位十进制数的ASCⅡ码,存放于3500h其实的内存单元中,将其转换为BCD码后,再按位分别存入350Ah起始的内存单元内.若输入的不是十进制ASCⅡ码,则对应存放结果的单元内容为 ...

最新文章

  1. 美多商城之商品(商品数据库表设计)
  2. web设计经验一 提升移动设备响应式设计的8个建议
  3. dig挖出DNS的秘密
  4. null在java存在的意义何在,Java并发编程——volatile关键字
  5. apollo在Linux下读不到参数,Apollo的基本使用及常见问题
  6. mysql group by 集合_MySQL高级查询之与Group By集合使用介绍
  7. iOS底层探索之KVO(四)—自定义KVO
  8. 【转】linux kernel 网络协议栈之GRO(Generic receive offload)
  9. python django文档_python Django中文文档下载
  10. 精密划片机维护及保养
  11. 树为什么能长这么高?
  12. graphpad画生存曲线怎么样去掉删失点_Graphpad 作图教程 | 这份超详细的生存曲线绘制指南,科研新手一看就会!...
  13. 【雷丰阳-谷粒商城 】课程概述
  14. luogu 题解 P1217 【[USACO1.5]回文质数 Prime Palindromes】
  15. 靠谱的HEVC方案-软编解码器
  16. App前端,Web前端,后端,微信小程序到底该学啥?
  17. Android 自定义View流程
  18. 应变片悬臂梁 电桥电路计算
  19. Redis的各种用途以及使用场景
  20. win10可以上网但是网路连接显示小地球(无法连接到Internet)

热门文章

  1. uniapp 导航栏自定义图标
  2. 计算机系统(嵌入式类)术语概念
  3. loj 6197. 法克 最小路径覆盖 好题
  4. cesium着色器学习系列5- 最长的一帧入口 理解
  5. 支柱业务游戏营收迎来复苏,英伟达顺利度过危险期?
  6. 0001_halcon-测量函数说明
  7. PMP思维导图 | 风险管理(一)
  8. Python保存数据到Excel文件
  9. 学习共享,集思广益。
  10. IDEA中@Override出现Method does not override method from its superclass错误