我看了
在Jason 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的两倍);
我很好奇:
一般来说,此类声明的用途是什么?它来自哪里
它如何为Jason Davies其余部分的代码增加价值?
答案 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