二进制反射格雷码
来源:互联网 发布:js option 选中 编辑:程序博客网 时间:2024/05/21 09:15
#include <iostream>#include <cmath>#include <vector>#include <string>using namespace std;#define MAX 1000int BCD[MAX];int GRAYCODE[MAX];int temp[MAX];//BCD码转换成格雷码void bcdToGraycode(int bcd[], int gray[], int rightIndex){if (rightIndex == 0){gray[rightIndex] = bcd[rightIndex];return;}else{gray[rightIndex] = bcd[rightIndex] ^ bcd[rightIndex - 1];bcdToGraycode(bcd, gray, rightIndex - 1);}}void generaterGrayCode(int n){vector<string> grayCodeVec;//当n为1的时候的格雷码 string aa = "0";string bb = "1";grayCodeVec.push_back(aa);grayCodeVec.push_back(bb);//产生大于两位的格雷码,n位格雷码的数量为2^n个 if (n > 1){for (int i = 2; i <= n; i++){//设置一个临时存储空间来存储n-1位格雷码 vector<string> tempGrayCodeVec;for (size_t k = 0; k < grayCodeVec.size(); k++){tempGrayCodeVec.push_back(grayCodeVec[k]);}//在前面产生的n-1位格雷码前面添加一位数0产生2^(n-1)个n位格雷码,并替换掉原来的n-1位格雷码 int tempGrayCodeVecSize = tempGrayCodeVec.size();for (int j = 0; j < tempGrayCodeVecSize; j++){string tempbitzero = "0";tempbitzero += tempGrayCodeVec[j];grayCodeVec[j] = tempbitzero;}//将前面产生的n-1位格雷码的顺序反转 //在反转后的n-1位格雷码前面添加一位数1产生剩下2^(n-1)个n位格雷码,并存储起来 for (int jj = tempGrayCodeVecSize - 1; jj >= 0; jj--){string tempbitone = "1";tempbitone += tempGrayCodeVec[jj];grayCodeVec.push_back(tempbitone);}//释放掉临时存储空间 tempGrayCodeVec.clear();}}//输出n位格雷码 for (size_t i = 0; i < grayCodeVec.size(); i++){cout << grayCodeVec[i] << endl;}cout << endl;}int main(){int number;//二进制数组长度int index = 0;int len;int m = 2;int t;//输入一个十进制数cin >> number;//转换成二进制数while (number){temp[index++] = number % 2;number = number >> 1;}//按照标准格式输出,位数为2的整数次幂while (1){t = pow(2, m);if (index <= t){len = t - 1;break;}else{m++;}}for (int i = 0; i <= len; i++){BCD[i] = 0;}t = index - 1;for (int i = 0; i < index; i++)BCD[len - index + 1 + i] = temp[t--];bcdToGraycode(BCD, GRAYCODE, len);for (int i = 0; i <= len; i++)cout << GRAYCODE[i] << ' ';generaterGrayCode(4);system("pause");return 0;}
40 1 1 0 0000000100110010011001110101010011001101111111101010101110011000请按任意键继续. . .
阅读全文
0 0
- 二进制反射格雷码
- 二进制|什么是反射?
- 二进制及java反射机制(培训笔记)
- javassist学习:动态创建二进制Java类二进制字节码并通过反射调用的示例
- 二进制格雷码与传统的连续二进制
- 格雷码二进制转换
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- 二进制
- HDOJ--2079选课时间!!!母函数
- java(3) 方法与一维数组
- 支持向量机(SVM)算法代码
- 微信小程序video组件播放不了
- android中https请求的单向认证和双向认证
- 二进制反射格雷码
- 《Android三方库--TakePhoto》
- js给json对象重新分配空间
- Tomcat无法启动A child container failed during start
- 机器学习技法-Kernel Support Vector Machine
- 【Scikit-Learn 中文文档】Pipeline(管道)和 FeatureUnion(特征联合): 合并的评估器
- Vue 组件命名
- Candy
- 【Scikit-Learn 中文文档】模型持久化