JL2*_*210 -1 c bit-manipulation bit-shift
我正在尝试获取C中无符号8位类型的最高有效位。
这就是我现在正在尝试做的事情:
uint8_t *var = ...;
...
(*var >> 6) & 1
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?如果不是,那会是什么?
屏蔽位的最标准/正确方法是使用形式为的可读位掩码1u << bit。任何发现1u << n代码的C程序员都会知道这是一个位掩码-因此它是自记录代码。
因此,如果您想要数字7,则可以这样写
*var & (1u << 7)
Run Code Online (Sandbox Code Playgroud)
该u后缀是崎岖的代码很重要,因为要避免意外的隐式促销符号类型。