格雷码: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