二进制与格雷码之间的转换

    xiaoxiao2021-12-14  18

    一、格雷码(Gray Code)的概念

    格雷码是我们在工程中常会遇到的一种编码方式,例如,大多数绝对型旋转编码的输出就是采用格雷码的编码格式。它是一种非加权码,由二进制码派生而来。常用的二进制数与格雷码间的转换关系如下表: 

    数值

    二进制码

    格雷码

    数值

    二进制码

    格雷码

    0

    0000

    0000

    9

    1001

    1101

    1

    0001

    0001

    10

    1010

    1111

    2

    0010

    0011

    11

    1011

    1110

    3

    0011

    0010

    12

    1100

    1010

    4

    0100

    0110

    13

    1101

    1011

    5

    0101

    0111

    14

    1110

    1001

    6

    0110

    0101

    15

    1111

    1000

    7

    0111

    0100

         

    8

    1000

    1100

         

    与普通二进制编码相比,格雷码的特点是相邻两个数之间只有 1 个二进制位发生了变化。正是这个特点,使它更适合于用在数据传输的场合。 

    (一)、二进制码转为格雷码

    二进制码转为格雷码的算法较简单,将所需转换的数的二进制码右移一位后与原数相异或即可。

    例:十进制数 9 的格雷码为: 

    (二)、格雷码转为二进制码格雷码转为二进制码的算法则较为繁琐,计算公式如下:

    Rn n 位的格雷码,Cn 为转换后的二进制码Cn = Rn, Cn-1 = RnRn-1,

    Cn-2 = RnRn-1Rn-2, ... C1 = RnRn-1Rn-2...R2R1,C0 = RnRn-1Rn-2...R2R1R0

    例:格雷码(1001)转位二进制数

    C4= C4=R4           C4=1 C3= R4R3= C4R3=10       C3=1 C2= R4R3R2= C3R2=10       C2=1 C1R4R3R2R1= C2R1=1⊕0     C1=0

    规律就是最高位与最高位相等,接下去用当前位的格雷码值与上次的结果作异或,得到每一位二进制的结果

    转载请注明原文地址: https://ju.6miu.com/read-963963.html

    最新回复(0)