GetAsyncKeyState 中的符号“&”

Mic*_*sai -1 c++ if-statement

if (GetAsyncKeyState(key) & 0x8000)
Run Code Online (Sandbox Code Playgroud)

上面if语句中的“&”是什么意思?为什么我们需要使用它?

Cah*_*gor 6

GetAsyncKeyState(key)
Run Code Online (Sandbox Code Playgroud)

将返回 16 位值。

这样的1010010101110110

最高位包含密钥状态。

1 010010101110110 最高位以粗体显示。

由于我们只对最高阶的值感兴趣并屏蔽其余的值,因此我们执行以下 & 按位运算 和 运算

0x8000 是1 000000000000000 的十六进制表示。

密钥 & 0x8000

==>

1 010010101110110 GetAsyncKeyState(键)

&

1 000000000000000 0x8000

结果:

1 000000000000000评估为 true 的值

如示例所示,我们屏蔽除最高位以外的位,如果按下按键则设置最高位,否则为零。如果按下该键,则执行 if 块。