有一段C语言程序没看懂,不知道该函数的返回值表示什么,希望能给函数加上注释.

问题描述:

有一段C语言程序没看懂,不知道该函数的返回值表示什么,希望能给函数加上注释.
unsigned int parity(unsigned int x)
{x = x^(x >> 16);
x = x^(x >> 8);
x = x^(x >> 4);
x = x^(x >> 2);
x = x^(x >> 1);
return x&1;
}
1个回答 分类:综合 2014-11-04

问题解答:

我来补答
unsigned int parity(unsigned int x)
{x = x^(x >> 16);//x等于(x与(x逻辑右移16位)的异或),下面类似
x = x^(x >> 8);
x = x^(x >> 4);
x = x^(x >> 2);
x = x^(x >> 1);
return x&1;//x与1按位与,实际上前面几位都是0,最后一位不变
}
这个函数的所用是将unsigned int类型x的32位全部进行异或运算
第一次,前16位与后16位进行异或
第二次,最后两个8个位进行异或
然后最后两个四位、两个二位,两个一位进行异或
就像是折纸一样,一直对折,他们最后就会叠到一起,异或到最后一位
最后一句是把前面几位忽略掉,因为没用了,只要最后一位结果
 
 
展开全文阅读
剩余:2000
上一页:指函数和对函数
下一页:字丑请见谅。
也许感兴趣的知识