Nik*_*Nik 3 math boolean-logic
我有点旗帜,其中:
A = 1 (0001)
B = 2 (0010)
C = 4 (0100)
D = 8 (1000)
Run Code Online (Sandbox Code Playgroud)
我想在我的旗帜中设置A和C位:flag = A | C
现在我的旗帜是5(0101).
我需要从flag中删除C位.我怎样才能做到这一点?
要清除标志,通常AND
使用其补码,例如C语言和相关语言:
x = 5; // x = 0101
x = x & ~C; // x = x & 1011 = 0101 & 1011 = 0001
Run Code Online (Sandbox Code Playgroud)
注意:这可以稍微简洁地表达为:
x &= ~C;
Run Code Online (Sandbox Code Playgroud)
或者,如果您已经知道特定位为1并且您想将其设置为0,则可以使用XOR切换(反转)它:
x = x ^ C; // x = x ^ 0100 = 0101 ^ 0100 = 0001
Run Code Online (Sandbox Code Playgroud)
要么:
x ^= C;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1163 次 |
最近记录: |