位运算

位运算

先回顾一下,一个整数可以写成十进制、二进制或十六进制形式:

13(十进制)= 0b1101 = 0xd

> binString 和 hexString 函数分别可以得到一个整数的二进制和十六进制表示。

掌握二进制值的操作,可以优化频繁计算中的某些步骤,或者快速处理一串布尔值。

什么是二进制数

一个二进制数既可以表示一个数字,也可以表示一个布尔值数组。由于整数是 64 位的,一个整数可以表示 64 个布尔值。下文中,我们约定值为 1 的位对应 true,值为 0 的位对应 false。

可用的运算符和函数

LeekScript 的位运算符有:

还有一些专门的函数可以方便地进行位操作:testBit、setBit、bitCount、bitLength、trailingZeros 和 leadingZeros。

要处理超过 64 位的整数,请参阅 BigInteger。

位掩码

位掩码用于取出一个数中某些位或位组的值。

取出索引 N 处的位

要取出索引 N 处的值:

取出 N 个连续位的值

要取出最低 N 位的值:

其中 0b111...111 是一个由 N 个 1 组成的二进制数,等于 2**N-1。