【发布时间】:2013-09-29 12:10:29
【问题描述】:
一般来说,位移 (>> , <<) 允许我们除以/乘以 ^2
例子:
9 (base 10): 00000000000000000000000000001001 (base 2)
--------------------------------
9 >> 2 (base 10): 00000000000000000000000000000010 (base 2) = 2 (base 10)
对于负数字:
同样,-9 >> 2 产生 -3,因为符号被保留:
-9 (base 10): 11111111111111111111111111110111 (base 2)
--------------------------------
-9 >> 2 (base 10): 11111111111111111111111111111101 (base 2) = -3 (base 10)
但是看看>>>,它对正数的行为相同,但对负数的行为不同:
零位从左边移入
我找不到任何将0 左移的原因/用法(这使得整数为正数):
-9 (base 10): 11111111111111111111111111110111 (base 2)
--------------------------------
-9 >>> 2 (base 10): 00111111111111111111111111111101 (base 2) = 1073741821 (base 10)
问题:
在什么情况下我应该使用>>> ?我不明白我为什么要从左边填充零并弄乱我的负数。
【问题讨论】:
-
阅读 logical right shift, the
>>>operator,>>保留符号,但>>>不是 -
@GrijeshChauhan 这真的很有帮助,但它只解释了我已经知道的如何它的工作原理。但在什么情况下我应该使用它?我没有看到任何将这些位向右移动并添加左填充零的数学运算。我的意思是,如果我告诉你使用按位运算来除数 - 你会选择
>>但你什么时候会选择>>>? -
好的,我再次阅读了您的问题。我在某处读到无符号移位在图形编程中经常使用。我不知道怎么做。所以+。
-
阅读:Read usage of
>>>有时我们在编程中使用,例如我在my answer 中使用的这里 -
@RoyiNamir 这取决于你如何阅读(解释)
11111111111111111111111111110111。我可能想用作 unsigned int0xfffffff7并进行右移以 divide 它。
标签: javascript binary bit-manipulation