格雷码

来源:互联网 发布:md5判断密码正确java 编辑:程序博客网 时间:2024/05/01 22:36

格雷码:Gray Code

1.      格雷码是一种二进制数值系统,它的相邻两个数之间只相差一位,其余个位都一样。与一般的自然的二进制系统相比,格雷码具有以下特点:

a)        无权重

b)       相邻两个gray码之间只差一位,可以避免数字电路一次产生很大的脉冲,很大程度上避免了状态转换时候的逻辑混淆。

c)       Gray码并不唯一

2.      自然二进制码i转换为一般的gray码g的公式为:g = i ^ (i>>1)

容易证明i ^ (i>>1)和(i-1) ^ ((i-1)>>1)仅仅相差1位,并且差别位是在二进制i的右数第一个不为0的位上。所以,

当i = 0,得到第一个gray码为0 ^ (0>>1) = 0,

i = 1时,1 ^ (1>>1) = 1

i = 2时,2 ^ (2>>1) = 3

依次类推,可以得到所有的gray码。

3.      gray码转换为二进制码,相当于把上面的公式进行变换。

i = g ^(i>>1) = g ^ ((g ^ (i>>1))>>1) = …… 直到(i>>n) = 0,容易看出,这是一个递归的过程,化简得到:

i = g ^(g>>1) ^ (g>>2) ^ … ^ (g>>n),其中n为g的bit位数。

4. 参考文献

1. http://wenku.baidu.com/view/1a2eb520bcd126fff7050ba6.html

原创粉丝点击