格雷码是以n位的二进制来表示数。

与普通的二进制表示不同的是,它要求相邻两个数字只能有1个数位不同。

首尾两个数字也要求只有1位之差。

有很多算法来生成格雷码。以下是较常见的一种:

从编码全0开始生成。

当产生第奇数个数时,只把当前数字最末位改变(0变1,1变0)

当产生第偶数个数时,先找到最右边的一个1,把它左边的数字改变。

用这个规则产生的4位格雷码序列如下:

0000

0001

0011

0010

0110

0111

0101

0100

1100

1101

1111

1110

1010

1011

1001

1000

#include

#include

#include

void change(char &ch) {

if (ch == '0')

ch = '1';

else

ch = '0';

}

int main() {

int n;

scanf("%d", &n); //输入需要转换的数

int size = log2(n) + 1; //计算所需位数

char *a = new char[size];

a[size] = ' ';

memset(a, '0', size); //初始化数组

for (int i = 0; i <= n; i++) {

if (i % 2)

change(a[size - 1]); //奇数改末尾

else

for (int j = size - 1; j > 0; j--) { //偶数操作

if (a[j] == '1') {

change(a[j - 1]);

break;

}

}

printf("%s

", a); //此行可去除

}

printf("result = %s

", a);

return 0;

}

十进制转格雷码 c语言,C语言输出格雷码相关推荐

  1. c语言输入字符串输出ASCLL码值并且输出十六进制

    #include <stdio.h> #include <string.h> #include <stdlib.h>int main() {unsigned cha ...

  2. c语言输出字母A的ascii值,ascii是什么意思_C语言中如何输出ASCII码

    描述 ASCII是AmericanStandardCodeforInformationInterchange的缩写,用来制订计算机中每个符号对应的代码,这也叫做计算机的内码(code). 1.ASCI ...

  3. 十进制数的原码 c语言,C语言程序设计第1章节(zmy).ppt

    C语言程序设计第1章节(zmy).ppt 张茂元 副教授, 硕士生导师, 博士后 华中科技大学计算机学院 2007年2月;C语言程序设计-第1章 概论;1.1 学习C语言程序设计的第一个例子 ;例1. ...

  4. JavaGUI:多功能计算器(三)--AWT多语言定制(完整源码)

    用Java实现多功能双语计算器v0.34 一.多语言界面简介: 1. 多语言的必要性: a. 按键上的文本串名称并非每个人都能立即理解,无论是英文还是中文都存在局限性,尤其不熟悉数学符号的情景:菜单项 ...

  5. 输入asc码输出字符c语言,输入一个字符输出ascii码

    C语言 输入一个字母,输出与之对应的ASCII码,输入用C语言编写. #include "stdafx.h" //VS 预编译头文件,其他系统请删除 #include #inclu ...

  6. linux内核c语言笔试,C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)...

    在分析代码之前,我们先来了解一下,BCD码和二进制到底区别在哪? 学习过计算机原理的和数字电子技术这两门课的都会知道这两个到底是什么含义,也有的同学学过了,考过了,过了一段时间又忘记了,今天,我们通过 ...

  7. 数据结构源码笔记(C语言描述)汇总

    数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...

  8. 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序

    //实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...

  9. 数据结构源码笔记(C语言):索引文件建立和查找

    //实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...

  10. 数据结构源码笔记(C语言):快速排序

    //实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

最新文章

  1. 三次握手和四次挥手图解_图解 TCP 三次握手和四次挥手
  2. 一道简单的面试题:竟然有90%的程序员不能把这个算法完全写正确。。。
  3. 【Vue Laravel-mix】Error with Vue lazy loading components: “Failed to resolve async component“
  4. 用 Hasor 谈一谈MVC设计模式
  5. 二次修改:【练习题】构造方法的重载:Vehicles(交通工具)-Car(小汽车)和Truck(卡车)类继承于Vehicles类
  6. Cookie实现用户登录记住密码,实现自动登录
  7. DIV常用属性大全自己整理
  8. 识别波峰波谷算法_马丁普林格:波峰-波谷演进法
  9. zabbix监控特殊端口(8080,80,8009等)
  10. IDEA autowired校验关闭方法
  11. 网络之NSURLConnection
  12. NOI 2021 游记
  13. Ubuntu安装USB无线网卡驱动
  14. 触摸屏——S5PV210的触摸屏的理论与操作
  15. 安卓手机管理器_安卓如何看撤回的微信
  16. Arduino Pulsesensor脉搏心率的检测
  17. django之七(模型层ORM相关)
  18. MATLAB数组乘方
  19. canvas:绘制简单春联demo
  20. 数理统计之协方差矩阵

热门文章

  1. 计算机辅助设计及工程分析的特点,EDA技术的简单介绍及特点分析
  2. 广义线性混合模型GLMM
  3. 为酒店设计一套计算机网络管理系统,酒店管理系统设计与方案.doc
  4. 数据库实验五-数据库设计实验
  5. iOS开发 字体适配
  6. python 典型相关分析_典型关联分析(CCA)原理
  7. 使用 SnakeYAML 操作 YAML 数据
  8. 计算机网络波特率公式,传输速率——比特率和波特率
  9. 火车头伪原创php,火车头伪原创插件使用教程
  10. NI RS422/RS485接线方式