allOddBits返回1

时间:2015-02-08 01:08:28

标签: c bit

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);
}

别介意,......我想出了解决方案,但确实需要一些时间。我很感激你的意见。

1 个答案:

答案 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);