Problem
The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.
Example 1:
1 |
|
Example 2:
1 |
|
Explanation
-
We list the first couple of grey code and its corresponding binary number.
1
2
3
4
5
6
7
8
9Int Grey Code Binary 0 000 000 1 001 001 2 011 010 3 010 011 4 110 100 5 111 101 6 101 110 7 100 111
-
There is a formula to convert binary number to its grey code, and formula to convert grey code to its binary.
1
2
3
4
5
6
7
8
9
10
11unsigned int binaryToGray(unsigned int num) { return (num >> 1) ^ num; } unsigned int grayToBinary(unsigned int num) { unsigned int mask; for (mask = num >> 1; mask != 0; mask = mask >> 1) { num = num ^ mask; } return num; }
Solution
1 |
|