C++ 未将 Bitflag 设置为其实际值

c++ unset bitflag to its real value

本文关键字:未将 Bitflag 设置 C++      更新时间:2023-10-16

您好,是否可以以某种方式将位标志设置为其实际值?例

int a = 0x01 << 7
a = 128

如何将 128 转换回 7 ?

我试过^= , &= ~, &= 但我所做的一切都没有奏效。

如果您只设置了一个位,那么您可以使用"计数尾随零"操作,例如使用 gcc 或与 gcc 兼容的编译器:

int a = 128;
int bit = __builtin_ctz(a); // returns bit = 7