Alcor6L/eLua/bit
外观
< Alcor6L
由于 Lua 还没有 (目前) 内置位操作的能力,因此 bit 模块被添加到 eLua 中以填补这一空白。它基于 Reuben Thomas 编写的 bitlib 库 (稍作调整以适应 eLua),并提供基本位操作 (如设置和清除位) 和按位操作。
生成一个具有 1 位的数字 (用于掩码生成)。相当于 C 中的 1 << position。
number = bit.bit( position )
- position - 将被设置为 1 的位的位位置。
返回值
- number - 一个只在位置处有一个 1 位的数字 (其余位设置为 0)。
测试给定的位是否被设置。
flag = bit.isset( value, position )
- value - 要测试的值。
- position - 要测试的位位置。
返回值
- flag - 如果给定位置的位为 1 则为 true,否则为 false。
测试给定的位是否被清除。
flag = bit.isclear( value, position )
- value - 要测试的值。
- position - 要测试的位位置。
返回值
- flag - 如果给定位置的位为 0 则为 true,否则为 false。
在数字中设置位。
number = bit.set( value, pos1, pos2, ..., posn )
- value - 基数。
- pos1 - 要设置的第一个位的位位置。
- pos2 - 要设置的第二个位的位位置。
- posn - 要设置的第 n 位的位位置。
返回值
- number - 在给定位置设置了位的数字。
清除数字中的位。
number = bit.clear( value, pos1, pos2, ..., posn )
- value - 基数。
- pos1 - 要清除的第一个位的位位置。
- pos2 - 要清除的第二个位的位位置。
- posn - 要清除的第 n 位的位位置。
返回值: number - 在给定位置清除了位的数字。
按位取反,相当于 C 中的 ~value。
number = bit.bnot( value )
- value - 要取反的数字。
返回值: number - 该数字的按位取反值。
按位与,相当于 C 中的 val1 & val2 & ... & valn。
number = bit.band( val1, val2, ... valn )
- val1 - 第一个与操作参数。
- val2 - 第二个与操作参数。
- valn - 第 n 个与操作参数。
返回值: number - 所有参数的按位与结果。
按位或,相当于 C 中的 val1 | val2 | ... | valn。
number = bit.bor( val1, val2, ... valn )
- val1 - 第一个或操作参数。
- val2 - 第二个或操作参数。
- valn - 第 n 个或操作参数。
返回值: number - 所有参数的按位或结果。
按位异或 (XOR),相当于 C 中的 val1 ^ val2 ^ ... ^ valn。
number = bit.bxor( val1, val2, ... valn )
- val1 - 第一个异或操作参数。
- val2 - 第二个异或操作参数。
- valn - 第 n 个异或操作参数。
返回值: number - 所有参数的按位异或结果。
左移数字,相当于 C 中的 value < shift。
number = bit.lshift( value, shift )
- value - 要移位的数字。
- shift - 移位的位数。
返回值: number - 左移的数字
逻辑右移数字,相当于 C 中的 ( unsigned )value >> shift。
number = bit.rshift( value, shift )
- value - 要移位的数字。
- shift - 移位的位数。
返回值
- number - (逻辑) 右移的数字。
算术右移数字,相当于 C 中的 value >> shift。
number = bit.arshift( value, shift )
- value - 要移位的数字。
- shift - 移位的位数。
返回值
- number - (算术) 右移的数字。