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


2022年12月23日, Learn eTutorial
1600

什么是格雷码和二进制?

二进制是一种**以2为基数**的数字系统。而我们的**十进制系统**是以**10**为基数。**基数2意味着只有0和1来表示一个数字**。例如,考虑十进制整数**2**,它的二进制形式是**010**。它用于机器语言,这意味着任何编程语言在执行前都会转换为二进制。

格雷码最好的解释是,它是二进制数的反射。它是一种数字排序,使得两个连续的数字在二进制中仅相差一位。它被称为反射二进制码。格雷码用于有线电视、数字信号传输等。

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

要在 Python 中将二进制数转换为格雷码,我们需要对二进制数与(该数-1)进行`XOR`运算,其中“该数-1”是通过右移该数的位来计算的。

注意:整数将大于零,如果数字为零,则格雷码也为零。

算法

步骤 1:接受用户输入。

步骤 2:调用函数进行格雷码转换。

步骤 3:使用 Python 中的 print 语句打印函数返回的格雷码值。

用户定义函数 binarytog(n)

步骤 1:将用户输入作为参数接收,并使用 `int` 函数将其转换为整数,并使用精度**2**。

步骤 2: 对二进制数与该数减1进行`XOR`运算,其中该数减1是使用Python中的右移位运算符通过右移该数的位来计算的。

步骤 3: 使用 `bin` 函数返回该值,并使用切片操作删除 `bin` 方法的二进制表示中出现的 **0b** 前缀。


要使用Python程序将二进制数转换为格雷码,我们需要使用以下概念,建议学习这些概念以更好地理解

Python 源代码

                                          def binarytog(n):
    n = int(n, 2)           # convert to int
    n ^= (n >> 1)
    return bin(n)[2:]     # the slice operation is to remove the prefix as the bin will return with '0b' prefix
 
 
g = input('Enter binary number: ')
b = binarytog(g)
print('Gray codeword:', b)
                                      

输出

Enter binary number: 110

Gray codeword: 101