Hello函数被称为allOddBits,带有一个输入,所以如果函数在奇数位时识别为1,那么它将返回1,否则返回0; 感谢您的帮助。 我们只允许使用这些! 〜& ^ | +<< >>位操作不超过12次。这种方式总是返回一个不正确的1,因为当'a'的值没有奇数位等于1时,它不应该返回1.
int main(int argc, char *argv[]) {
unsigned a,c;
a= 0xAAAAAAAA; // given bits, it can be anything
c= a>>31; // Shifting 31 bits to the right and fill in 0 instead
c= ~c; // flipping the bits so it can all be 1 except for LSB
printf(": %u\n", !!c);
}
别介意,......我想出了解决方案,但确实需要一些时间。我很感激你的意见。
答案 0 :(得分:1)
unsigned int x = strtoul(argv[1], NULL, 10);
unsigned int a = 0x55555555; // or 0xAAAAAAAA if you count LSB as bit 0
return ((x & a) == a);