Javascript 语法:用“<<”或“>>”声明变量

Javascript syntax: variable declaration with "<<" or ">>"

我看过 Jason Davies's Word Cloud source on Githubindex.js 中有一些变量声明如下:

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

我注意到这个模式: “<<”之前的值乘以“<<”之后的值;
“<<”之后的值是指定值的 2 次方;
“>>”之后的值(在“<<”之后)除以之前的数字(这也是该值的 2 次方);

我很好奇:

  1. 一般来说,这种类型的声明有什么用,它来自哪里

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

看到这个link

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

a * 2^b

>>同理,只是右移。它几乎类似于除以 2 的一个因子,但是当初始数字为奇数时有一种特殊情况:它会使结果下降。

⌊(a / 2^b)⌋

如果你有1 << 11 >> 5,左移和右移相互抵消,我们最终会得到

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