gpt4 book ai didi

c - 如何删除 C 中的标志?

转载 作者:太空狗 更新时间:2023-10-29 16:14:23 25 4
gpt4 key购买 nike

有一个变量包含一些标志,我想删除其中一个。但我不知道如何删除它。

这是我设置标志的方式。

my.emask |= ENABLE_SHOOT;

最佳答案

简答题

您想做一个 Bitwise AND使用 Bitwise NOT 对当前值进行操作要取消设置的标志的操作。按位 NOT 反转每一位(即 0 => 1、1 => 0)。

flags = flags & ~MASK;flags &= ~MASK;

长答案

ENABLE_WALK  = 0    // 00000000
ENABLE_RUN = 1 // 00000001
ENABLE_SHOOT = 2 // 00000010
ENABLE_SHOOTRUN = 3 // 00000011

value = ENABLE_RUN // 00000001
value |= ENABLE_SHOOT // 00000011 or same as ENABLE_SHOOTRUN

当您对要取消设置的值执行按位 AND 和按位 NOT 时。

value = value & ~ENABLE_SHOOT // 00000001

你实际上在做:

      0 0 0 0 0 0 1 1     (current value)
& 1 1 1 1 1 1 0 1 (~ENABLE_SHOOT)
---------------
0 0 0 0 0 0 0 1 (result)

关于c - 如何删除 C 中的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920307/

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