为了账号安全,请及时绑定邮箱和手机立即绑定

BitSet 为啥要选择ADDRESS_BITS_PER_WORD=6?

BitSet 为啥要选择ADDRESS_BITS_PER_WORD=6?

天涯尽头无女友 2019-01-04 22:15:42
Hi guys,我在 BitSet(JDK1.8)中看到,通过bitIndex获取wordIndex的方法如下: /**      * Given a bit index, return word index containing it.      */     private static int wordIndex(int bitIndex) {        return bitIndex >> ADDRESS_BITS_PER_WORD;     }其中 ADDRESS_BITS_PER_WORD 的说明如下,    /*      * BitSets are packed into arrays of "words."  Currently a word is      * a long, which consists of 64 bits, requiring 6 address bits.      * The choice of word size is determined purely by performance concerns.      */     private final static int ADDRESS_BITS_PER_WORD = 6;我对ADDRESS_BITS_PER_WORD =6 持有疑惑,为什么基于性能考虑要选择6? 具体能说一下么?
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

BitSet 选择使用long[] 来保存位数,long 是64位的,所以需要6位数寻址。至于说性能考虑应该是说选择long比 int ,byte 等的位数长,只需相对更低频的扩展数组来保存对应位数。
应该注意到这个实现只是一个简单实现,当需要设置很大的一位时,前面没有使用的long浪费了很大空间,这种情况下需要使用更高效的位数保存方案。

查看完整回答
反对 回复 2019-01-04
  • 1 回答
  • 0 关注
  • 711 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信