跳轉到內容

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 - (算術) 右移的數字。
華夏公益教科書