gpt4 book ai didi

c - c中的变量按位运算

转载 作者:行者123 更新时间:2023-11-30 21:35:22 26 4
gpt4 key购买 nike

我有一个变量列表,请注意每个变量只有一个 1二进制形式的不同位置:

int a = 0x00000001;
int b = 0x00000002;
int c = 0x00000004;
int d = 0x00000008;
int bounder = d;
int e = 0x00000010;
int f = 0x00000020;

新变量X可以设置为bitwise OR上面的任何变量如下:

int X = a | b | d | f;

我需要一个函数f检查给定的X(X >= bounder) ,是吗bitwise OR值<边界的变量。例如:

f(a|d) return true
f(a|b|c|e) return true
f(e|f) return false

我写:

bool f(int x) {
return x << 29;
}

但是29是硬代码,如果我更改边界值,我也不会忘记更改29。我不确定这是跨平台的(int 二进制表示可能不同?)

我需要 f 来:

  1. 跑得快。
  2. 跨平台(Linux 和 Windows)。
  3. 边界值可以更改为另一个变量,例如 c 或 e...(运行时,至少是编译时)

最佳答案

要检查 x 中是否设置了小于 bounder 的任何位,请执行以下操作:

bool f(unsigned int x, unsigned int bounder)
{
return ((x & (bounder - 1)) != 0);
}

-1 是关键,因为它会生成一个掩码,该掩码将所有需要检查的位设置为 1

关于c - c中的变量按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429395/

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