错开异或 得结果
static unsigned int DecimaltoGray(unsigned int x) { return x^(x>>1); } //以上代码实现了unsigned int型数据到格雷码的转换,最高可转换32位自然二进制码,超出32位将溢出。 static int DecimaltoGray( int x) { return x^(x>>1); } //以上代码实现了 int型数据到格雷码的转换,最高可转换31位自然二进制码,超出31位将溢出。 上述代码即可用于VC控制程序中,也可以用于单片机控制程序中。在单片机程序设计时,若采用汇编语言编程,可以按相同的原理设计程序;若采用C语言编程,则可以直接利用上述代码,但建议用unsigned int函数。 · static unsigned int GraytoDecimal(unsigned int x) · { · unsigned int y = x; · while(x>>=1) · y ^= x; · return y; · } · static unsigned int GraytoDecimal(unsigned int x) · { · x^=x>>16; · x^=x>>8; · x^=x>>4; · x^=X>>2; · x^=x^1; · return x; · } · static unsigned int GraytoDecimal(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位格雷码转换。 |
|
来自: 昵称12483407 > 《数字电子》