Javascript 语法:用“<<”或“>>”声明变量
Javascript syntax: variable declaration with "<<" or ">>"
我看过 Jason Davies's Word Cloud source on Github
在 index.js 中有一些变量声明如下:
cw = 1 << 11 >> 5,
ch = 1 << 11;
我注意到这个模式:
“<<”之前的值乘以“<<”之后的值;
“<<”之后的值是指定值的 2 次方;
“>>”之后的值(在“<<”之后)除以之前的数字(这也是该值的 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
我看过 Jason Davies's Word Cloud source on Github 在 index.js 中有一些变量声明如下:
cw = 1 << 11 >> 5,
ch = 1 << 11;
我注意到这个模式:
“<<”之前的值乘以“<<”之后的值;
“<<”之后的值是指定值的 2 次方;
“>>”之后的值(在“<<”之后)除以之前的数字(这也是该值的 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