bit

作者:吴永 更新时间:2020年8月14日 关键字:位操作,bit

bit.bit()

左移运算,等价于C语言中的1 << position

  • 语法

    number = bit.bit( position )

  • 参数

    参数

    释义

    position

    需要移位的位置

  • 返回值

    移位运算后的值

  • 例子

print(bit.bit(2))--参数是位数,作用是1向左移动两位,打印出4

bit.isset()

测试位数是否被置1

  • 语法

    flag = bit.isset( value, position )

  • 参数

    参数

    释义

    value

    被测试的值

    position

    被测试的位置

  • 返回值

    true:该位被置1

    false:其他

  • 例子

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:其他

  • 例子

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之后的值

  • 例子

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之后的值

  • 例子

print(bit.clear(5,0,2)) --在相应的位置置0,打印0

bit.bnot()

取反,等价于C语言中的~

  • 语法

    number = bit.bnot( value )

  • 参数

    参数

    释义

    value

    需要取反的值

  • 返回值

    取反之后的值

  • 例子

print(bit.bnot(5))--按位取反,输出-6

bit.band()

与运算,等价于C语言中的val1 & val2 & … & valn

  • 语法

    number = bit.band( val1, val2, ... valn )

  • 参数

    参数

    释义

    val1

    第一个参数

    val2

    第二个参数

    valn

    第n个参数

  • 返回值

    与运算之后的结果

  • 例子

print(bit.band(1,1))--与,--输出1

bit.bor()

或运算,等价于C里面的val1 | val2 | … | valn

  • 语法

    number = bit.bor( val1, val2, ... valn )

  • 参数

    参数

    释义

    val1

    第一个参数

    val2

    第二个参数

    valn

    第n个参数

  • 返回值

    或运算之后的结果

  • 例子

print(bit.bor(1,2))--或,--输出3

bit.bxor()

异或运算,等价于C语言中的val1 ^ val2 ^ … ^ valn

  • 语法

    number = bit.bxor( val1, val2, ... valn )

  • 参数

    参数

    释义

    val1

    第一个参数

    val2

    第二个参数

    valn

    第n个参数

  • 返回值

    异或运算之后的结果

  • 例子

print(bit.bxor(1,2))--异或,相同为0,不同为1

bit.lshift()

逻辑左移,等价于C语言中的value << shift

  • 语法

    number = bit.lshift( value, shift )

  • 参数

    参数

    释义

    value

    移位的值

    shift

    移位的位置

  • 返回值

    逻辑左移之后的结果

  • 例子

print(bit.lshift(1,2))--逻辑左移,“100”,输出为4

bit.rshift()

逻辑右移,等价于C语言中的value >> shift

  • 语法

    number = bit.rshift( value, shift )

  • 参数

    参数

    释义

    value

    移位的值

    shift

    移位的位置

  • 返回值

    逻辑右移之后的结果

  • 例子

print(bit.rshift(4,2))--逻辑右移,“001”,输出为1

bit.arshift()

算数右移

  • 语法

    number = bit.arshift( value, shift )

  • 参数

    参数

    释义

    value

    移位的值

    shift

    移位的位置

  • 返回值

    算术右移之后的结果

  • 例子

print(bit.arshift(2,2))--算数右移,左边添加的数与符号有关,输出为0