博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言输出格雷码
阅读量:5035 次
发布时间:2019-06-12

本文共 1037 字,大约阅读时间需要 3 分钟。

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

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

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

从编码全0开始生成。
当产生第奇数个数时,只把当前数字最末位改变(0变1,1变0)
当产生第偶数个数时,先找到最右边的一个1,把它左边的数字改变。
用这个规则产生的4位格雷码序列如下:

0000000100110010011001110101010011001101111111101010101110011000
#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] = '\0'; 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\n", a); //此行可去除 } printf("result = %s\n", a); return 0;}

 

 

转载于:https://www.cnblogs.com/F-itachi/p/9974336.html

你可能感兴趣的文章
PHP并发情况下如何防止商品礼品超卖、超发等情况
查看>>
2012、10、05 听课笔记
查看>>
Newtonsoft.Json 将C#对象转化为json格式
查看>>
简单注册表单
查看>>
167. Two Sum II - Input array is sorted
查看>>
hdu 1201 18岁生日
查看>>
PHP json_encode函数中需要注意的地方
查看>>
Java的引用与C的指针
查看>>
Hdu 1271 整数对
查看>>
微信小程序-B站:wxml和wxss文件
查看>>
课上加密作业
查看>>
课堂作业05--6种质量属性
查看>>
一些JavaScript基本函数
查看>>
DragDrop registration did not succeed. (摘录)
查看>>
win32 application怎么把结果输出到调试窗口
查看>>
angular 使用dialog的经验
查看>>
30个极大提高开发效率的Visual Studio Code插件
查看>>
使用JFinal与DataTable的批量处理
查看>>
SQL 完美解决用逗号分隔存放在一个字段数据
查看>>
励志人生。成功基本的十个方法 转自百度文库
查看>>