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 - (算術) 右移的數字。