有一段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;}
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/25 13:33:39
有一段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;}
有一段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;
}
有一段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;}
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个位进行异或
然后最后两个四位、两个二位,两个一位进行异或
就像是折纸一样,一直对折,他们最后就会叠到一起,异或到最后一位
最后一句是把前面几位忽略掉,因为没用了,只要最后一位结果