【问题标题】:Javascript Bitwise to Regular Operators [duplicate]Javascript按位到正则运算符[重复]
【发布时间】:2013-05-01 17:06:00
【问题描述】:

我最近一直在阅读这本书,“Supercharged Javascript Graphics”,它真是太棒了。它有一些使用 html5 画布元素和其他图形的非常有趣的概念和示例。它还使用 jquery 库并教授如何创建自己的插件。然而,在他的大多数示例中,他使用bitwise operators,我无法理解它们。他确实解释了它们的用途,但并不完全。他的例子中用得最多的是:

       x >> 0
       x << y
       x >>> 0
       x & y
       x | y
       x^y

我在理解它们的用途和好处时遇到了一些麻烦,所以我只想知道使用常规运算符时它们的等价物是什么。如何将 x &gt;&gt; y 替换为 x%y 之类的东西或类似的东西。

【问题讨论】:

  • 他们解释了他们的工作,但唯一清楚的例子是 x>>y。他们也没有详细介绍性能及其优势
  • 该链接应该是必读的,但并不直接适用于 JavaScript,所以在我看来没有重复。

标签: javascript jquery operators html5-canvas bitwise-operators


【解决方案1】:

下面是对每一个的解释。在所有情况下,如有必要,运算符会将其参数转换为整数值。结果始终是整数值(如果任一参数都不能转换为整数值,则为 NaN)。

x >> 0

这会将 0 位向右移动,用符号位填充左侧。这是一种将x 截断为整数的技巧。 (如果x 不是负数则与Math.floor(x) 相同,如果x 不是正数则与Math.ceil(x) 相同。)

x << y

这会将y 位向左移动,在右侧用零填充。相当于乘以 2y。当y &lt; 0 时,它的行为有些出人意料:它使用y 的二进制补码表示的低五位作为正移位值。

x >>> 0

这根本不会改变x,而是将x 转换为无符号整数值的结果。 (例如,(-1) &gt;&gt;&gt; 0 是 4294967295 = 232-1。)

x & y

这需要x 和y 中的值的按位与。结果的每一位都是1当且仅当x和y的对应位都是1。

x | y

这对x 和y 中的值进行按位或运算。结果的每一位为 1 当且仅当x 和y 的相应位之一或两者为一。

x^y

这对x 和y 中的值进行异或运算。结果的每一位都是1当且仅当x和y的对应位不同。

【讨论】:

  • 如果 x 被移动到另一个值而不是 0 会怎样。那是 x &gt;&gt; y
  • @lomas09 - 与整数除以 2^y 相同。与&lt;&lt; 一样,移位中仅使用y 的后五位。
  • 你让我的一天变得更轻松了。谢谢我真的很感激
猜你喜欢
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2015-06-13
相关资源
最近更新 更多