Javascript语法:带有“<<”的变量声明或“>>”

时间:2016-08-02 21:32:07

标签: javascript algorithm d3.js word-cloud

我看了enter image description hereJason Davies's Word Cloud source on Github中,有一些变量声明如下:

cw = 1 << 11 >> 5,
ch = 1 << 11;

我注意到了这种模式: “&lt;&lt;”之前的值将“&lt;&lt;”之后的值乘以; “&lt;&lt;”之后的值是指定值的2的幂;
“&gt;&gt;”之后的值(在“&lt;&lt;”之后)除以前的那个数字(也是值的2的两倍);

我很好奇:

  1. 一般来说,此类声明的用途是什么?它来自哪里

  2. 它如何为Jason Davies其余部分的代码增加价值?

1 个答案:

答案 0 :(得分:2)

请参阅此link

基本上,<<>>会逐位转换。如果您执行a << b,则会将a表示为基数2(0和1)中的数字,并将所有数字向左移动b个位置。这在数学上等同于

a * 2^b

>>原则相同,但它向右移动。它几乎类似于除法因子2,但是当初始数字是奇数时会出现一种特殊情况:它会对结果产生影响。

⌊(a / 2^b)⌋

如果你有1 << 11 >> 5,左右移动互相取消,我们最终实现

1 << 6 === 64 === 1 * 2^6