bit === 作者:吴永 更新时间:2020年8月14日 关键字:位操作,bit bit.bit() ~~~~~~~~~ 左移运算,等价于C语言中的1 << position - 语法 ``number = bit.bit( position )`` - 参数 ======== ============== 参数 释义 ======== ============== position 需要移位的位置 ======== ============== - 返回值 移位运算后的值 - 例子 .. code:: lua print(bit.bit(2))--参数是位数,作用是1向左移动两位,打印出4 -------------- bit.isset() ~~~~~~~~~~~ 测试位数是否被置1 - 语法 ``flag = bit.isset( value, position )`` - 参数 ======== ============ 参数 释义 ======== ============ value 被测试的值 position 被测试的位置 ======== ============ - 返回值 true:该位被置1 false:其他 - 例子 .. code:: lua print(bit.isset(5,0))--第一个参数是是测试数字,第二个是测试位置。从右向左数0到7。是1返回true,否则返回false,该返回true print(bit.isset(5,1))--打印false print(bit.isset(5,2))--打印true print(bit.isset(5,3))--返回返回false -------------- bit.isclear() ~~~~~~~~~~~~~ 测试位数是否被置0 - 语法 ``flag = bit.isclear( value, position )`` - 参数 ======== ============ 参数 释义 ======== ============ value 被测试的值 position 被测试的位置 ======== ============ - 返回值 true:该位被置0 false:其他 - 例子 .. code:: lua print(bit.isclear(5,0))--与上面的相反 print(bit.isclear(5,1)) print(bit.isclear(5,2)) print(bit.isclear(5,3)) -------------- bit.set() ~~~~~~~~~ 置1 - 语法 ``number = bit.set( value, pos1, pos2, ..., posn )`` - 参数 ===== ==================== 参数 释义 ===== ==================== value 基数(需要改变的值) pos1 第一位置 pos2 第二位置 posn 第n位置 ===== ==================== - 返回值 置1之后的值 - 例子 .. code:: lua print(bit.set(0,0,1,2,3))--在相应的位数置1,打印15 -------------- bit.clear() ~~~~~~~~~~~ 置0 - 语法 ``number = bit.clear( value, pos1, pos2, ..., posn )`` - 参数 ===== ==================== 参数 释义 ===== ==================== value 基数(需要改变的值) pos1 第一位置 pos2 第二位置 posn 第n位置 ===== ==================== - 返回值 置0之后的值 - 例子 .. code:: lua print(bit.clear(5,0,2)) --在相应的位置置0,打印0 -------------- bit.bnot() ~~~~~~~~~~ 取反,等价于C语言中的~ - 语法 ``number = bit.bnot( value )`` - 参数 ===== ============ 参数 释义 ===== ============ value 需要取反的值 ===== ============ - 返回值 取反之后的值 - 例子 .. code:: lua print(bit.bnot(5))--按位取反,输出-6 -------------- bit.band() ~~~~~~~~~~ 与运算,等价于C语言中的val1 & val2 & … & valn - 语法 ``number = bit.band( val1, val2, ... valn )`` - 参数 ==== ========== 参数 释义 ==== ========== val1 第一个参数 val2 第二个参数 valn 第n个参数 ==== ========== - 返回值 与运算之后的结果 - 例子 .. code:: lua print(bit.band(1,1))--与,--输出1 -------------- bit.bor() ~~~~~~~~~ 或运算,等价于C里面的val1 \| val2 \| … \| valn - 语法 ``number = bit.bor( val1, val2, ... valn )`` - 参数 ==== ========== 参数 释义 ==== ========== val1 第一个参数 val2 第二个参数 valn 第n个参数 ==== ========== - 返回值 或运算之后的结果 - 例子 .. code:: lua print(bit.bor(1,2))--或,--输出3 -------------- bit.bxor() ~~~~~~~~~~ 异或运算,等价于C语言中的val1 ^ val2 ^ … ^ valn - 语法 ``number = bit.bxor( val1, val2, ... valn )`` - 参数 ==== ========== 参数 释义 ==== ========== val1 第一个参数 val2 第二个参数 valn 第n个参数 ==== ========== - 返回值 异或运算之后的结果 - 例子 .. code:: lua print(bit.bxor(1,2))--异或,相同为0,不同为1 -------------- bit.lshift() ~~~~~~~~~~~~ 逻辑左移,等价于C语言中的value << shift - 语法 ``number = bit.lshift( value, shift )`` - 参数 ===== ========== 参数 释义 ===== ========== value 移位的值 shift 移位的位置 ===== ========== - 返回值 逻辑左移之后的结果 - 例子 .. code:: lua print(bit.lshift(1,2))--逻辑左移,“100”,输出为4 -------------- bit.rshift() ~~~~~~~~~~~~ 逻辑右移,等价于C语言中的value >> shift - 语法 ``number = bit.rshift( value, shift )`` - 参数 ===== ========== 参数 释义 ===== ========== value 移位的值 shift 移位的位置 ===== ========== - 返回值 逻辑右移之后的结果 - 例子 .. code:: lua print(bit.rshift(4,2))--逻辑右移,“001”,输出为1 -------------- bit.arshift() ~~~~~~~~~~~~~ 算数右移 - 语法 ``number = bit.arshift( value, shift )`` - 参数 ===== ========== 参数 释义 ===== ========== value 移位的值 shift 移位的位置 ===== ========== - 返回值 算术右移之后的结果 - 例子 .. code:: lua print(bit.arshift(2,2))--算数右移,左边添加的数与符号有关,输出为0 --------------