(1)自然二进制数转换到格雷码
设有 N 位二进制数 B(i),其中 0 <= i <= N - 1;它可以变换成为同样位数的格雷码 G(i)。
二进制数与格雷码的转换公式如下:
G(i) = B(i+1) XOR B(i) ; 0 <= i < N - 1
G(i) = B(i)
编程时直接写成G = (B>>1)^B;
对应的电路图如下:
(2)格雷码转换到自然二进制数
设有 N 位格雷码 G(i),把它转换成自然二进制数的算法如下。
自然二进制码的最高位等于雷码的最高位;
自然二进制码的次高位为最高位自然二进制码与次高位格雷码相异或;
自然二进制码的其余各位与次高位自然二进制码的求法相类似。
转换公式如下:
B(i) = G(i)
B(i) = B(i+1) XOR G(i)
编程时可以写成:
B(WIDTH) = G(WIDTH);
for (i=WIDTH-1;i>=0;i--)
B[i]=B[i+1]^G[i];
对应的电路结构如下: