我正在查看github上的一个开源项目,我在Java中找到了以下代码行,
static byte[] byteArray = new byte[1 << 11];
这里我们知道1&lt;&lt; 11只不过是2048,所以我可以通过给出长度= 2048来直接初始化数组,
static byte[] byteArray = new byte[2048];
然后为什么它写成1&lt;&lt; 11而不是2048直接。
答案 0 :(得分:5)
使用逐位操作的原因是要明确这是2的幂。我看到人们混淆常数。例如8096是8192和4096的组合。
我更喜欢使用<< 10
或<< 20
来获取KB和MB。例如2 << 10
2 KB