跳转到内容

Alcor6L/eLua/bit

来自维基教科书,开放的书籍,为一个开放的世界

由于 Lua 还没有 (目前) 内置位操作的能力,因此 bit 模块被添加到 eLua 中以填补这一空白。它基于 Reuben Thomas 编写的 bitlib 库 (稍作调整以适应 eLua),并提供基本位操作 (如设置和清除位) 和按位操作。

生成一个具有 1 位的数字 (用于掩码生成)。相当于 C 中的 1 << position。

number = bit.bit( position )
  • position - 将被设置为 1 的位的位位置。

返回值

  • number - 一个只在位置处有一个 1 位的数字 (其余位设置为 0)。

bit.isset

[编辑 | 编辑源代码]

测试给定的位是否被设置。

flag = bit.isset( value, position )
  • value - 要测试的值。
  • position - 要测试的位位置。

返回值

  • flag - 如果给定位置的位为 1 则为 true,否则为 false。

bit.isclear

[编辑 | 编辑源代码]

测试给定的位是否被清除。

flag = bit.isclear( value, position )
  • value - 要测试的值。
  • position - 要测试的位位置。

返回值

  • flag - 如果给定位置的位为 0 则为 true,否则为 false。

在数字中设置位。

number = bit.set( value, pos1, pos2, ..., posn )
  • value - 基数。
  • pos1 - 要设置的第一个位的位位置。
  • pos2 - 要设置的第二个位的位位置。
  • posn - 要设置的第 n 位的位位置。

返回值

  • number - 在给定位置设置了位的数字。

bit.clear

[编辑 | 编辑源代码]

清除数字中的位。

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 - 所有参数的按位异或结果。

bit.lshift

[编辑 | 编辑源代码]

左移数字,相当于 C 中的 value < shift。

number = bit.lshift( value, shift )
  • value - 要移位的数字。
  • shift - 移位的位数。

返回值: number - 左移的数字

bit.rshift

[编辑 | 编辑源代码]

逻辑右移数字,相当于 C 中的 ( unsigned )value >> shift。

number = bit.rshift( value, shift )
  • value - 要移位的数字。
  • shift - 移位的位数。

返回值

  • number - (逻辑) 右移的数字。

bit.arshift

[编辑 | 编辑源代码]

算术右移数字,相当于 C 中的 value >> shift。

number = bit.arshift( value, shift )
  • value - 要移位的数字。
  • shift - 移位的位数。

返回值

  • number - (算术) 右移的数字。
华夏公益教科书