Decimal Equivalent of Gray Code and its Inverse in Java

2025年5月9日 | 阅读 3 分钟

在二进制计数系统中,一个比特将两个连续的值分开,这被称为“格雷码”。此外,数字信号处理和错误纠正也可以从中受益。“格雷码的十进制等效值”是指将格雷码数字转换为其基数 10 的十进制等效值的过程。从格雷码表示导出原始二进制数,对于“格雷码的逆”来说是相同的过程。对于给定的十进制数 n,我们的任务是找到该数在格雷码中的十进制表示。

示例 1

输入

String str = "10"

输出

格雷码的十进制等效值为 15

解释

1010 是 10 的二进制表示。

1111 是 1010 的格雷码等效值。

因此,格雷码的十进制等效值为 15。

示例 2

输入

String str = "5"

输出

格雷码的十进制等效值为 7

解释

101 是 5 的二进制表示。

111 是 101 的格雷码等效值。

因此,格雷码的十进制等效值为 7。

示例 3

输入

String str = "12"

输出

格雷码的十进制等效值为 10

解释

1100 是 12 的二进制表示。

1010 是 1100 的格雷码等效值。

因此,格雷码的十进制等效值为 10。

朴素方法

该程序使用 位运算 来转换格雷码、二进制 和十进制表示。grayToBinary 方法处理格雷码的每个比特,然后使用 XOR 来确定匹配的二进制比特。binaryToDecimal 函数使用基数-2 解析将二进制字符串转换为其十进制等效值。通过 XOR 连续的二进制比特,binaryToGray 技术将操作从二进制翻转到格雷码。在 main 方法 中逐步演示这些转换,以说明这三种表示之间的联系。

实施

输出

 
The Binary equivalent is: 1001
The Decimal equivalent is: 9
The Inverse Gray Code is: 1101