十进制数字的编码表示

十进制数字的编码表示

计算机采用的是4位二进制的代码表示十进制数,又叫BCD编码(Binary-Coded Decimal),软考程序员这本书里介绍了两种BCD编码,一种是8421BCD码,另一种是余3BCD码。

  • 8421BCD码

这种编码是最熟悉的方式,从0000依次加一来表示0-9的十进制数字,比如 0-0000,1-0001,2-0010,3-0011……,7-0111,8-1000,这种编码也叫有权码,在每一位的二进制,都有它的权值,比如作数第一位代表了8,然后是4。

  • 余3BCD码

这种编码是在8421BCD码演变而来,它的编码方式是,在每一个8421BCD编码上加0011,也就是加3。所以最初表示0的0000,在余3BCD编码种用0011表示,原先用1000表示的8,在余3BCD码种用1011表示。

  • 格雷码

在一些场景中,往往需要按照数字顺序变化来处理一些事情,比如可以用0~9的变化进行渐变色的处理,可是用BCD编码会出现这样一个问题。因为BCD编码是一种加权编码,每一位的变化有它固定的权值,越是靠左边,它所在的权值就变化的更大,假如电路出现了某种问题,导致输出的电信号出错,对于有权编码中,可能仅仅一位的变化,就会出现很明显的错误。比如从7到8中。0111到1000,这个变化中,需要变化四个位,才能从7表示为8,而在变化之中,一旦某一位出错,那么它就会变成一个与它原本要变化的值相差甚远。

 为了避免出现这种大的失误,出现了格雷码。

 格雷码最主要的特点是,相邻两个代码之间,只需要变化一位。那么格雷码编码的思想是什么呢?

当用二进制转化位格雷码时是这样做的。

比如9的二进制编码位1001,转换格雷码的规则:

  1. 最高位保持不变 1
  2. 第二位为第一位和第二位相加:1+0=1
  3. 第三位为第二位和第三位相加:0+0=0
  4. 第四位为第三位和第四位相加:0+1=1
  5. 所以9的格雷码编码为:1101

格雷码转二进制是怎样做呢:

比如10的格雷码是1111,转换为二进制的规则:

  1. 最高位保持不变1
  2. 第一位加第二位:1+1=0
  3. 上一步得到的值去加下一位:0+1=1
  4. 上一步得到的值去加下一位:1+1=0
  5. 最后得到的编码为:1010就是格雷码10的二进制码。

通过对比可以发现,格雷码在进行渐变的过程中,只需要变化其中一位,这也大大降低了如果出错造成的影响。

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值