【问题标题】:What is masking? (Bitwise operators) [duplicate]什么是掩蔽? (按位运算符)[重复]
【发布时间】:2018-03-25 00:09:00
【问题描述】:

我在网上看到关于位运算符的掩码是什么的解释,但由于使用了我不熟悉的符号,我无法完全理解解释。这是演示:

让我困惑的具体行是 "// 实际移位是 10 & (8-1) = 2 "。我知道 10 是我们想要左移的位数,但是在这种情况下,"&" 是什么意思,为什么我们要减去 8-1?

可在此处找到演示链接:

https://msdn.microsoft.com/en-us/library/8xftzc7e(v=vs.100).aspx

提前致谢。

【问题讨论】:

  • 请不要将代码粘贴为图像,而是使用正确的嵌入。
  • (请参阅 Why not upload images of code on SO when asking a question? 了解基本原理 - 可搜索性/索引、防止损坏链接的稳健性以及使用辅助技术的人的可访问性是更喜欢以文本形式发布内容的原因之一)。

标签: bit-manipulation bitwise-operators masking


【解决方案1】:

答案在你自己的链接备注部分的第二段

一个字节的位数是 8。所以位掩码是 7,即 0b111。将此应用于 10 (0x1010),您到达 0x10 aka 2。这就是您的班次量。

【讨论】:

  • JScript << 似乎并没有真正将旋转出来的位放回右边,不过,它只是将一个字节的移位 10 更改为 2 的移位。IMO 它是可疑的语言设计...
  • 现在谁在使用 JScript?也许 OP 只是在阅读一些过时的不相关文档
  • @ImperishableNight 把我的脸当成手掌。
  • @ImperishableNight 这很常见。轮班的轮换语义很少见。
  • @harold 具有 JScript 语义的程序是,作为一名程序员,如果我想将所有位从一个字节移开,我可能有充分的理由这样做。 “255”几乎从来都不是“255, 127, 63, 31, 15, 7, 3, 1, _”的逻辑延续。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
相关资源
最近更新 更多