vendy.liu
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看vendy.liu的 主题 / 回贴
楼主  发表于: 2009-01-09 14:47
有谁知道BCD以及HEX数制的转换?
zxc6688
工业自动化是我们的目标
级别: 略有小成
精华主题: 1 篇
发帖数量: 385 个
工控威望: 338 点
下载积分: 3994 分
在线时间: 174(小时)
注册时间: 2007-09-11
最后登录: 2024-01-05
查看zxc6688的 主题 / 回贴
1楼  发表于: 2009-01-09 20:29
BCD码刚好对应HEX的二进制位
BCD123   二进制表示0001 0010 0011
16#123   二进制表示0001 0010 0011
http://zxc6688.ys168.com/
zxc6688
工业自动化是我们的目标
级别: 略有小成
精华主题: 1 篇
发帖数量: 385 个
工控威望: 338 点
下载积分: 3994 分
在线时间: 174(小时)
注册时间: 2007-09-11
最后登录: 2024-01-05
查看zxc6688的 主题 / 回贴
2楼  发表于: 2009-01-10 08:36
引用
引用第3楼竹风凉于2009-01-09 22:52发表的  :

BCD 码大于9时是非法数字,计算机只认二进制,不转换,
运算会出错的

BCD码大于9?什么意思
BCD的每一位有大于9的吗
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码就是
  3 2 1
  0011 0010 0001
  原因:0011=8x0+4x0+1x2+1x1=3 0010=8x0+4x0+2x1+1x0=2. 0001=8x0+4x0+2x0+1x1=1
  具体:
  bcd码是十位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000
  举例:
  某二进制无符号数11101010,转换为三位非压缩BCD数,按百位、十位和个位的顺序表示,应为<U>__C</U>__。
  A.00000001 00000011 00000111 B. 00000011 00000001 00000111
  C.00000010 00000011 00000100 D. 00000011 00000001 00001001
  解:(1)11101010转换为十进制:234
  (2)按百位、十位和个位的顺序表示,应为<U>__C</U>__。
  附注:压缩BCD码与非压缩BCD码的区别—— 压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110B表示十进制数96D;非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000B表示十进制数8.
本帖最近评分记录:
  • 下载积分:+1(竹风凉) 鼓励一下!
  • http://zxc6688.ys168.com/