gpt4 book ai didi

c - 无需条件语句访问第 n 位

转载 作者:太空狗 更新时间:2023-10-29 15:51:17 26 4
gpt4 key购买 nike

所以我有一个位序列:

1010

1 是最高位。

如果奇数位为 0,我的函数需要返回整数 0,如果奇数位为 1,则返回 1。

我不能使用任何 for 循环或任何类似性质的东西来查看我是否需要返回 0 或 1。有没有人对如何解决这个问题有任何建议。

我正在考虑使用 not 操作,但我可以弄清楚如何使用它。

到目前为止,我使用的是 1010...10 的序列,然后将其添加。执行上述操作会得到 1010。现在我需要确定我返回的是 1 还是 0。

最佳答案

假设我们正在谈论 32 位整数。我假设您想知道是否设置了任何奇数位 (1)。

为此,我们创建了一个如下所示的整数:

10101010101010101010101010101010

现在,如果我们按此进行 AND (&),所有偶数位都会被过滤掉。现在,如果数字不为零,则设置一个或多个奇数位。在 C:

#include <stdint.h>

int hasodd(uint32_t x) {
// 0xAAAAAAAA = 10101010101010101010101010101010
// double negation to turn x>0 into 1 and leave 0 alone
return !!(x & 0xAAAAAAAA);
}

如果你的意思是你应该返回是否设置了第 N 位,这行得通。它将 1 右移到正确的位置以过滤掉所有不相关的位:

#include <stdint.h>

int nthbitset(uint32_t x, int n) {
return x & (1 << n);
}

关于c - 无需条件语句访问第 n 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211069/

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