#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/