Scala Bitset 到 BitMask 转换
Scala Bitset toBitMask transformation
BitSet
的 toBitMask
说明 Creates a bit mask for this set as a new array of longs
。但我不明白 toBitMask
是如何真正创建位掩码的。例如,我有下一个代码:
import scala.collection.BitSet
val nums = BitSet(6)
nums.toBitMask foreach println
1。它 return 是 64,为什么它 return 恰好是 64?
另一个例子
val nums1 = BitSet(3, 2).toBitMask
val nums2 = BitSet(3, 2, 0).toBitMask
- 为什么 nums1 = 12 而 nums2 = 13?
看起来发生的事情是 .toBitMask
将 BitSet 中的每个数字视为 "this bit number will be set to 1"。
BitSet(0).toBitMask == Array(1)
BitSet(1).toBitMask == Array(2)
BitSet(2).toBitMask == Array(4)
BitSet(3).toBitMask == Array(8)
因此,如果您有 BitSet(3, 2)
,您将创建一个数字,其中第 3 位和第 2 位(从零开始)为 1:
00001100
这是 12 的二进制。BitSet(3,2,0)
创建
00001101
这是 13 的二进制。
BitSet
的 toBitMask
说明 Creates a bit mask for this set as a new array of longs
。但我不明白 toBitMask
是如何真正创建位掩码的。例如,我有下一个代码:
import scala.collection.BitSet
val nums = BitSet(6)
nums.toBitMask foreach println
1。它 return 是 64,为什么它 return 恰好是 64?
另一个例子
val nums1 = BitSet(3, 2).toBitMask
val nums2 = BitSet(3, 2, 0).toBitMask
- 为什么 nums1 = 12 而 nums2 = 13?
看起来发生的事情是 .toBitMask
将 BitSet 中的每个数字视为 "this bit number will be set to 1"。
BitSet(0).toBitMask == Array(1)
BitSet(1).toBitMask == Array(2)
BitSet(2).toBitMask == Array(4)
BitSet(3).toBitMask == Array(8)
因此,如果您有 BitSet(3, 2)
,您将创建一个数字,其中第 3 位和第 2 位(从零开始)为 1:
00001100
这是 12 的二进制。BitSet(3,2,0)
创建
00001101
这是 13 的二进制。