二进制码转换格雷码

二进制转换格雷码

在书上看到二进制转换格雷码的方法,一开始看不懂,就去百度上搜索,结果篇没有找到介绍书上用的那个方法的文章。后来自己看懂了于是写这篇博客。

奇校验与偶校验

数据在传输的过程中可能会出现错误,所以通常在二进制编码中额外加上一个校验位(parity bit),用于示编码中1的个数是奇数还是偶数。主要有奇校验与偶校验两种方法。一般应用中只需要采用奇偶校验中的一种,偶校验用得更广泛。

偶校验

对于偶校验(even parity)来说,当字符编码中1的个数为偶数时校验位为0。

100 0001
其中有两个1所以校验位为0
所以编码为0100 0001

101 0100
其中有了个1所以校验位为1
所以编码为1101 0100

奇校验

对于奇校验(odd parity)来说,当字符编码中1的个数为奇数时,校验位为0。

100 0001
其中有两个1,为偶数个,所以校验位为1
所以编码为1100 0001

101 0100
其中有三个1,为奇数个,所以校验位为0
所以编码为0101 0100

格雷码

对于n(n必须为偶数)位二进制表示的计数序列来说,首先对前n/2个二进制进行编码,设目的格雷码的左边最高位为0,然后往右的各位由原二进制编码的每一位与它左边相邻位的偶校验构成。接着,将已构成的格雷码序列按逆序排列,并将左边最高位设为1,这样就构成了原序列中的后n/2个二进制编码所对应的格雷码序列。

以BCD码为例:
首先对前5个二进制编码
以0100为例:
设左边最高位为0, 0100中的第2位数字1与0构成二进制码01,有1个1,为奇数个,所以偶校验为1,所以格雷码第二位为1。
同理,0100中的第2位数字1与第3位数字0构成二进制编码10,其偶校验为1。
0100中第3数字0与第4位数字0构成二进制编码00,其偶校验为0。
所以0100的格雷码为0110
用这种方法就可得前5个格雷码为0000、0001、0011、0010和0110
将前5个格雷码逆序排列
可得0110、0010、0011、0001、0000
将左边最高位设为1
即可得到后5个格雷码为1110、1010、1011、1001、1000

参考书目:《逻辑与计算机设计基础》

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值