B(二进制)-G(格雷码)码
只需将B码后移一位前面加零,
然后将此B码与原B码相异或,
得出的结果就为该B码的Gray码
例如: B3B2B1B0 转化为G码,
就为 B3B2B1B0 (+)【异或】 0B3B2B1 B码
1100110后移一位,最前面加0变为 0110011
然后
1100110
(+) 0110011
-------------------------
0011001
//11101011(B)的格雷码是10011110(B),你可以用以下C代码进行转换
#includestdio.h
#includestdint.h
//格雷码编码
uint32_t Gray_Encode(uint32_t Bin)
{
return Bin ^ (Bin 1);
}
//格雷码解码
uint32_t Gray_Decode(uint32_t unionGrayBin)
{
uint32_t mask;
mask = 0x80000000;
while(mask != 0)
{
unionGrayBin ^= (unionGrayBin mask) 1;
mask = 1;
}
return unionGrayBin;
}
main()
{
uint32_t b,g;
b = 0x000000EB;
g = Gray_Encode(b);
printf("g = %X\n",g);
}
格雷码转二进制公式:二进位码第n位=二进位码第(n+1)位+格雷码第n位。因为二进位码和格雷码皆有相同位数,所以二进位码可从最高位的左边位元取0,以进行计算。