gpt4 book ai didi

C - 如果所有偶数位都设置为 1,则确定所有

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:52 25 4
gpt4 key购买 nike

判断所有偶数位(从左到右计数)是否都设置为 1。例如,0101 0101 会计数,而 1011 1000 不会计数。

如果该位所有偶数位都为1,则返回1,否则返回0。

约束:只能使用按位运算符。不能使用条件。您可以在表达式中使用的最大整数是 0xFF

这是我的代码:

int allEvenBits(int X) {
int x1 = !((X & 0x55) ^ 0x55);
int x2 = !(((X >> 8) & 0x55) ^ 0x55);
int x3 = !(((X >> 16) & 0x55) ^ 0x55);
int x4 = !(((X >> 24) & 0x55) ^ 0x55);
return x1 + x2 + x3 + x4;

上面的代码为以下内容返回 1:1011 0010 1001 0010 1011 1001 1111 1111

我如何修改它以使其与约束一起工作?

最佳答案

假设>>>算作按位运算符,下面只需要16个以内的常量即可。

int allEven(unsigned x) {
x &= x >> 16;
x &= x >> 8;
x &= x >> 4;
x &= x >> 2;
return x&1;
}

关于C - 如果所有偶数位都设置为 1,则确定所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25952658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com