gpt4 book ai didi

c++ - C++中的按位设置

转载 作者:太空狗 更新时间:2023-10-29 23:34:31 27 4
gpt4 key购买 nike

#define OUTGOING_MASK         0x0c
#define OUTGOING_DISABLED 0x04
#define OUTGOING_ENABLED 0x08
#define OUTGOING_AUTO 0x00
#define REFER_SUPPORTED 0x80

假设 support 是一些 int 类型的值。我有一个吸气函数

int get()
{
if(OUTGOING_DISABLED == support & OUTGOING_MASK)
return 1;
else if(OUTGOING_ENABLED == support & OUTGOING_MASK)
return 2;
else if(OUTGOING_AUTO == support & OUTGOING_MASK)
return 3;
}

我需要为此编写设置函数,例如

void set(int val)
{
if(val ==1)
//todo
else if(value == 2)
//todo
else if(value == 3)
//todo
}

如何为此编写 getter 和 setter 函数?我需要在此处获取/设置 support 变量

REFER_SUPPORTED 将始终在support 中设置。

最佳答案

I have a statement such as a1 = b & a2; How to know the value of b using bitwise operators?

您无法恢复 b 的值,除非 a 设置了所有位。 “&”是不可逆的。

解释。 &操作有下表:

a   b   result
1 & 1 = 1
0 & 1 = 0
1 & 0 = 0
0 & 0 = 0

这意味着,要恢复 b,您可以尝试使用下表:

a   result  b
0 0 unknown - could be 1 or 0
0 1 invalid/impossible - could not happen
1 0 0
1 1 1

如您所见,不可能在所有情况下都猜出 b。

在表达式 a & b = c 中,如果知道 c 和 a,则无法恢复 b,因为对于 c 的每个归零位,如果 a 的对应位也为零,则对应的状态有两种可能b的一点点仅当 a 的每一位都设置为 1 时,您才能可靠地恢复 b。

关于c++ - C++中的按位设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099075/

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