1.自然二進制碼轉換成二進制格雷碼
自然二進制碼轉換成二進制格雷碼,其法則是保留自然二進制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。
2.二進制格雷碼轉換成自然二進制碼
二進制格雷碼轉換成自然二進制碼,其法則是保留格雷碼的最高位作為自然二進制碼的最高位,而次高位自然二進制碼為高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其余各位與次高位自然二進制碼的求法相類似。
a>自然二進制碼轉換成二進制格雷碼
1.unsigned int型數據到格雷碼的轉換,最高可轉換32位自然二進制碼,超過32位將溢出
static unsigned int decimal_to_gray(unsigned int x)

{
return x^(x>>1);
}
2.int型數據到格雷碼的轉換,最高可轉換31位自然二進制碼,超出31位將溢出。
static int decimal_to_gray(int x)

{
return x^(x>>1);
}
b>二進制格雷碼轉化成自然二進制碼
1.
static unsigned int gray_to_decimal(unsigned int x)

{
unsigned int y=x;
while(x>>=1)
y^=x;
return y;
}
2.
static unsigned int gray_to_decimal(unsigned int x)

{
x^=x>>16;
x^=x>>8;
x^=x>>4;
x^=x>>2;
x^=x^1;
return x;
}
3.
static unsigned int gray_to_decimal(unsigned int x)

{
int i;
for(i=0;(1<<i)<sizeof(x)*8;i++)
{
x^=x>>(1<<i);
}
return x;
}以上代碼實現了unsigned int型數據到自然二進制碼的轉換,最高可轉換32位格雷碼,超出32位將溢出。將數據類型改為int型可實現31位格雷碼轉換。


