不明白为什么结果是一个

Don't understand why result is one

我必须创建一个函数,它可以被赋予一个最多 32 位的 int。如果奇数位为 1,则应为 return 1,否则为 0。我知道如果它与掩码不匹配它 return 为零,但我不明白为什么它 return 如果它与掩码匹配则为 1。是因为 & 比较后结果不等于 0,因此 returns true which is one?

int any_odd_one(unsigned x)
{

return (x&0xAAAAAAAA)!=0;

& 是按位与运算符,它的工作原理是从左边的参数中取出一个位,从右边的参数中取出相同的位,对它们进行 'and' 运算,然后保存结果作为结果中的一点。它对每一位都这样做。

因为 'and' 的结果只有在两个参数都为“1”时才能为“1”,所以使用 0xAAAAAAAA 作为一个参数与设置第二个参数的每个偶数位具有相同的效果参数为“0”,并保留所有奇数位。

如果上述结果为'0',则表示所有奇数位均为'0'。

还请记住,当整数转换为布尔值时,除“0”之外的任何其他内容都会转换为 true