将格雷码转换为二进制的 Python 程序


2023 年 1 月 8 日, Learn eTutorial
1582

为了理解这个 Python 程序,我们需要了解二进制和格雷码。

什么是格雷码和二进制码?

二进制码:二进制是基数为 2 的数字,这意味着该数字仅由零和一表示。它用于机器语言中。例如,4 的二进制码是 0100。

格雷码: 格雷码也称为反射二进制码,它只是二进制数的一种排列方式,其中连续值仅相差 1 位。4 的格雷码的一个例子是 0110。

如何在 Python 中将格雷码转换为二进制?

这种转换是通过对一个整数及其减一的整数进行连续的**异或**运算来实现的。然后再次与那个减一的整数进行**异或**运算。

为了得到小于 1 的数字,我们使用二进制的右移,并对该数字和右移后的数字(即数字减 1)进行异或运算。所以我们可以说格雷码可以通过 (g XOR (g >> 1) XOR (g >> 2) XOR … XOR (g >> m)) 转换为二进制。

算法

步骤 1: 从用户端输入格雷码

步骤 2: 调用用户自定义函数 graytob(n),将该数字作为参数传递。

步骤 3: 打印返回的值。

用户自定义函数 graytob(n)

步骤 1: 从主程序接收格雷码。

步骤 2: 在 Python 编程语言中使用 int 将格雷码转换为整数。

步骤 3: 将该数字存储在另一个变量中。

步骤 4: 打开一个 while 循环 直到该数字。

步骤 5: 将数字右移一位以得到数字 -1,用于与数字进行异或运算。

步骤 6: 现在,对数字和右移后的数字进行异或运算,直到所有 while 循环迭代完成。

步骤 7: 使用 bin 返回二进制表示的数字。


为了将格雷码转换为二进制码,我们在 Python 中使用了以下概念,建议您参考这些概念以更好地理解

Python 源代码

                                          def graytob(n):
  
    n = int(n, 2) # convert to int
 
    mask = n
    while mask != 0:
        mask >>= 1
        n ^= mask
 
    return bin(n)[2:]
 
 
g = input('Enter Gray codeword: ')
b = graytob(g)
print('In binary:', b)
                                      

输出

Enter Gray codeword: 10
In binary: 11