格雷码二进制转换

来源:互联网 发布:搜索引擎 知乎 编辑:程序博客网 时间:2024/06/07 07:54

在结构光编码方法中,有一种格雷码编码方法;与二进制编码方法相比,格雷码编码方法能够更好的一只噪声干扰,方便纠错。用格雷码对三维测量空间进行编码,在解码时需要将格雷码在此转换成二进制,方便计算。

一. 二进制转换为格雷码

1. 对n位二进制的码字,从右到左,以0到n-1编码
2. 如果二进制码字的第i位和i+1位相同,则对应的格雷码的第i位为0,否则为1(当i+1=n时,二进制码字的第n位被认为是0,即第n-1位不变)

实现代码如下:

unsigned BinaryToGray(unsigned num){        return (num>>1) ^ num;}

将二进制值右移一位,与原值取异或,即可得到格雷码值。


二. 格雷码转为二进制

从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)。依次异或,直到最低位。依次异或转换后的值(二进制数)就是格雷码转换后二进制码的值。
实现代码如下:
unsigned grayToBinary(unsigned graycode,unsigned numbits){for (unsigned shift = 1; shift < numbits; shift <<= 1){graycode ^= graycode >> shift;}return graycode;}



0 0
原创粉丝点击