1.格雷码的概念

1.性质

格雷码(Grey Code),又叫循环二进制码或反射二进制码,是一种编码方式,它的基本特点是任意两个相邻的格雷码只有一位二进制数不同。
常用的二进制数与格雷码间的转换关系如下表:

从表中我们可以发现任意两个相邻的格雷码只有一位二进制数不同

2.转换方法

二进制数转格雷码的方法如下:
从左到右,每一位的格雷码值等于该位的二进制值异或(XOR)上该位左边一位的二进制值。特别地,最左边一位的格雷码值等于二进制值。
鉴于有些读者可能对异或不熟悉,这里给出异或的对照表

如:0100
从左到右分别编为1,2,3,4位
第1位0,保持不变
第2位1,左侧为0, 1 XOR 0=1
第3位0 ,左侧为1, 0 XOR 1=1
第4位0,左侧为0, 0 XOR 0=0
所以0100 的格雷码为0110

代码实现上,为了是每一位能与它左边一位异或,我们可以直接将x异或上x>>1
如:0100,左移一位是0010
0100
0010
————
0110
求单个格雷码的代码如下

int get_grey(int x){return x^(x>>1);
}

求0~2^n-1全部格雷码的代码如下

void get_grey(int n,int *x){//x[i]表示i对应的格雷码 for(int i=0;i<(1<<n);i++){x[i]=i^(i>>1);}
}

转载于:https://www.cnblogs.com/birchtree/p/9845847.html

浅谈格雷码(Grey Code)在信息学竞赛中的应用相关推荐

  1. gray code java_格雷码Gray Code详解

    格雷码简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连",因此又 ...

  2. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  3. 用matlab2012b计算自控原理的稳态误差,浅谈用终值定理计算自控原理中的稳态误差...

    ·115· 哈尔滨职业技术学院学报 2013年第2 期 Journal of Harbin Vocational & Technical College 在自动控制原理中,控制系统的稳态误差是 ...

  4. 样条线怎么挤出平面_浅谈“沿样条线挤出”在多边形建模中的应用

    龙源期刊网 http://www.qikan.com.cn 浅谈 " 沿样条线挤出 " 在多边形建模中的应用 作者:谢巍 来源:<硅谷> 2011 年第 04 期 摘要 ...

  5. 计算机在财务核算中的应用,浅谈计算机在财务核算和财务管理工作中的辅助应用...

    浅谈计算机在财务核算和财务管理工作中的辅助应用 计算机在财务管理中的应用日益广泛,已成为企业财务管理的必要手段.计算机的应用改善了企业财务管理环境,提高了财 (本文共1页) 阅读全文>> ...

  6. 微型计算机在机械设计中的应用,浅谈计算机技术在机械设计制造及自动化中的应用.docx...

    浅谈计算机技术在机械设计制造及自动化中的应用 当前科学技术与机械制造与自动化技术相互融合,将多种学科中的复合型技术加以整合,形成综合性的机械设计制造自动化学科.作为机械制造的核心内容,自动化在人们的生 ...

  7. 浅谈列控系统的阶梯式分级速度控制中专有名词的表述问题

    浅谈列控系统的阶梯式分级速度控制中专有名词的表述问题 一.问题提出 个人在学习列车运行控制系统的过程中发现,不同的文献中,在介绍和论述列车运行控制系统的阶梯式分级速度控制方式时,总会提到下面专有名词中 ...

  8. 计算机室在初中英语教学中的应用,浅谈现代教育技术在初中英语教学中的运用...

    科 教 创 新浅谈现代教育技术在初中英语教学中的运用 宁夏中卫市中宁县第四中学 段立勇 [摘 要]随着计算机与网络的普及.教育信息化的不断深化与发展,计算机与网络走进了普通中小学教室.走进了广大教师与 ...

  9. 农村小学计算机教育论文,浅谈现代信息技术在农村小学语文教学中的有效应用...

    浅谈现代信息技术在农村小学语文教学中的有效应用 宝塔小学 郑苏芳 [摘要]: 随着课程改革的进行,信息技术在日常教学中的有效应用,改变了传统的教学模式.信息技术在教学中的有效运用已经成为一个热点问题, ...

最新文章

  1. Android --- SharedPreferences的详细介绍
  2. nodejs+grunt配置记
  3. java异常处理框架_深入探索 高效的Java异常处理框架(1)
  4. cmd 进入mysql-python_MySQL在cmd和python下的常用操作
  5. Visual Studio 2019 16.6 Preview 2 发布
  6. Linux 实用命令
  7. 单层感知机实现或运算
  8. Ip地址的配置与解释
  9. 工资管理系统【软件综合设计报告】
  10. 【场景化解决方案】金蝶凭证信息与OA审批集成
  11. android:scrollbars代码控制,android:scrollbars属性和弹出键盘的问题
  12. 正则表达式之提取数字
  13. 网站攻击常见的几种方式
  14. ppt讲解中的过渡_PPT「过渡页」怎么设计才好看?
  15. linux常用命令与问题排查命令记录
  16. JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)
  17. 湘潭大学计算机组成原理试卷,湘潭大学11级原理课堂测验题集.ppt
  18. 2022年上半年财神爷最爱照顾的星座
  19. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
  20. 综合素质——作文——规则意识、人品教育、自信、用于探索、开拓前行;

热门文章

  1. Failed to resolve: 之一
  2. elasticsearch索引和映射
  3. 组合数据类型练习,英文词频统计实例9-21
  4. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善...
  5. 得到一个汉字的拼音第一个字母
  6. WordPress Terillion Reviews插件HTML注入漏洞
  7. 摄影类网站解析及推荐
  8. flex image 控件显示bmp 格式图片
  9. [转]NDK中log输出方法
  10. opencv怎么2个摄像头_最后2个月,怎么做能够快速提分?