格雷码的十进制等价及其逆序

2023年 9月 7日 72.8k 0

格雷码的十进制等价及其逆序

格雷码或反射二进制码是一种数字二进制表示形式,其中两个连续数字仅相差一位。

例如1的格雷码是001,2的格雷码是011。

格雷码通常用于纠错,因为它可以防止在状态更改时通常的二进制表示中可能发生的一些数据错误。

由于其独特的属性,格雷码在 k-map、通信等方面也很有帮助。

先决条件

在进一步阅读之前,请先研究十进制、二进制和格雷码符号。

问题陈述 1

给定一个十进制数 n,求该数的十进制形式的格雷码。

示例

Input: 3
Output: 2

登录后复制

说明 -> 3 的二进制表示为 011。其格雷码表示为 010。010 的十进制表示为 2。

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

Input: 5
Output: 7

登录后复制

说明 -> 5 的二进制表示形式为 101。其格雷码表示形式为 111,其十进制表示形式为 7。

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

解决方案

编译器理解二进制格式的数字。

因此,在我们的程序中,当我们输入十进制格式的数字时,它会被解释为二进制。

因此,我们只需要将数字从其二进制等价物转换为其格雷码即可。

二进制到格雷码转换

二进制表示和格雷码的最左边的位是相等的。通过对连续的二进制位进行异或运算可以找到右侧的以下位。

例如 -

考虑n = 3。3的二进制代码是011。

  • 二进制码和格雷码的最左边位相等。因此,格雷码中从左起第一位就是0。

  • 对于左起第二位,将二进制代码中左起第一位和第二位进行异或。 0 异或 1 = 1。

  • 对于左起第三位,将二进制代码中左起第二位和第三位进行异或。 1 异或 1 = 0。

因此格雷码:010。

算法:使用按位运算符

我们可以通过以下步骤获取数字n的格雷码 -

  • n 右移 1。

  • 将右移后的数字与原始 n 进行异或。

示例

下面是一个使用按位运算符从二进制代码中查找格雷码的 C++ 程序

#include
using namespace std;
//This function returns the decimal equivalent
// of the gray code of n.
int dec_equi_of_gray(int n) {
return n ^ (n >> 1);
}
int main(){
int n = 3;
cout>= 1;
binary ^= n;
}
return binary;
}
// Driver Code
int main(){
int n = 15;
cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论