【问题标题】:Why is & 0xFFFF needed when checking if caps lock on为什么在检查大写锁定时需要 & 0xFFFF
【发布时间】:2019-03-07 17:15:37
【问题描述】:

我正在尝试检查 CAPS LOCK 是否打开。 我已经看到了以下行,我想知道为什么需要带有 0xFFFF 的 AND,因为带有 0xFFFF 的 AND 将返回完全相同的数字。我已经读过here,为了检查 CAPS LOCK 是否被切换,您需要检查低位,因此它应该是 AND 与 1。那么,为什么是 0xFFFF?

bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;

谢谢!

【问题讨论】:

  • 如果GetKeyState 实际上是GetKeyState,那么0xffff 完全没有意义。如果它是返回 int 的自定义包装器,它可能有目的。

标签: c# .net capslock


【解决方案1】:

我同意 GSerg 不需要使用它。但是通常使用 and 位运算符是为了获取值的一部分。

例如:

0x11ffff
0xffff 
--------- AND
0xffff

您可以使用this online bitwise calculator 了解其工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多