0

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

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

我在理解它们的用途和好处时遇到了一些麻烦,所以我只想知道使用常规运算符它们的等价物是什么。我怎样才能x >> y用类似的东西x%y或类似的东西来代替。

4

1 回答 1

2

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

x >> 0

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

x << y

这会将y位向左移动,在右侧用零填充。它相当于乘以 2 y。它在以下情况下表现有些出乎意料y < 0:它使用二进制补码表示的低五位y作为正移位值。

x >>> 0

这完全没有变化x,而是转换x为无符号整数值的结果。(例如,(-1) >>> 0是 4294967295 = 2 32 -1。)

x & y

这需要 和 中的值的按位xy。结果的每一位为 1 当且仅当 和 的对应位x均为y1。

x | y

这需要 和 中的值的按位xyx当且仅当和的相应位中的一个或两个为 1 时,结果的每个位为 1 y

x^y

这需要 和 中的值的异xyx当且仅当 和 的对应位不同时,结果的每一位为 1 y

于 2013-05-07T16:46:50.063 回答