1.20的30次方到2.30是一个小时吗

今天看HashMap的底层实现发现HashMap的最大嫆量规定为:

  1. // 最大容量(必须是2的幂且小于2的30次方,传入容量过大将被这个值替换)

当看到 1<<30 时对“<<” 有点模糊,当了解“<<”的用法之后又有一个问题;

首先介绍下等号右边数字及字符的含义:

1、"<<"为左移运算符,1表示十进制中的“1”30表示十进制数字1转化为二进制后向左移動30位。在数值上等同于2的30次幂

2、为什么是2的30次幂?

回到题目,为什么会是2的30次幂而不是2的31次幂呢?

首先:JAVA规定了该static final 类型的静态变量为int类型至于为什么不是byte、long等类型,原因是由于考虑到HashMap的性能问题而作的折中处理!

由于int类型限制了该变量的长度为4个字节共32个二进制位按悝说可以向左移动31位即2的31次幂。但是事实上由于二进制数字中最高的一位也就是最左边的一位是符号位用来表示正负之分(0为正,1为负)所以只能向左移动30位,而不能移动到处在最高位的符号位!

}

最新回答 (4条回答)

一小时60分钟那麼就有30次分裂。也就是2得30比方2分钟也就是细胞分裂得时间,1小时很明显是再问你。
2分钟和1小时 答案是2的三十次方
2的30次方个细胞。。2min是两分钟。1h是一小时
}

我要回帖

更多关于 1.20的30次方 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信