二进制数与格雷码的转换:二进制码转换成二进制格雷码,其法则是保留二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。
转换代码为
static unsigned int DecimaltoGray(unsigned int x)
{
return x^(x>>1);
}
此题将 0 到2^n-1全部转换为格雷码即可
vector<int> grayCode(int n) {
vector<int> res;
for(int i=0;i<pow(2,n);i++)
res.push_back((i>>1)^i);
return res;
}