将数字规范化为位操作的数字范围并返回它。 通常不需要此函数,因为所有位操作都已经规范化了它们的所有输入参数。
参数
x number number to normalize
返回值
y number normalized number
例子
print(0xffffffff) --> 4294967295 (*)
print(bit.tobit(0xffffffff)) --> -1
printx(bit.tobit(0xffffffff)) --> 0xffffffff
print(bit.tobit(0xffffffff + 1)) --> 0
print(bit.tobit(2^40 + 1234)) --> 1234
将其第一个参数转换为十六进制字符串。 十六进制数字的数量由可选的第二个参数的绝对值给出。 1 到 8 之间的正数生成小写的十六进制数字。 负数生成大写的十六进制数字。 只有最不重要的 4*|n| 位被使用。 默认是生成 8 个小写的十六进制数字。
参数
x number number to convert
n number number of hex digits to return
返回值
s string hexadecimal string
例子
print(bit.tohex(1)) --> 00000001
print(bit.tohex(-1)) --> ffffffff
print(bit.tohex(0xffffffff)) --> ffffffff
print(bit.tohex(-1, -8)) --> FFFFFFFF
print(bit.tohex(0x21, 4)) --> 0021
print(bit.tohex(0x87654321, 4)) --> 4321
返回其参数的按位非。
参数
x number number
返回值
y number bitwise not of number x
例子
print(bit.bnot(0)) --> -1
printx(bit.bnot(0)) --> 0xffffffff
print(bit.bnot(-1)) --> 0
print(bit.bnot(0xffffffff)) --> 0
printx(bit.bnot(0x12345678)) --> 0xedcba987
返回其所有参数的按位或。 请注意,允许使用两个以上的参数。
参数
x1 number number
[x2…] number number(s)
返回值
y number bitwise or of the provided arguments
例子
print(bit.bor(1, 2, 4, 8)) --> 15
返回其所有参数的按位和。 请注意,允许使用两个以上的参数。
参数
x1 number number
[x2…] number number(s)
返回值
y number bitwise and of the provided arguments
例子
printx(bit.band(0x12345678, 0xff)) --> 0x00000078
返回其所有参数的按位异或。 请注意,允许使用两个以上的参数。
参数
x1 number number
[x2…] number number(s)
返回值
y number bitwise xor of the provided arguments
例子
printx(bit.bxor(0xa5a5f0f0, 0xaa55ff00)) --> 0x0ff00ff0
通过第二个参数给定的位数返回其第一个参数的按位逻辑左移。 逻辑移位将第一个参数视为无符号数并移位 0 位。 仅使用移位计数的低 5 位(减少到范围 [0…31])。
参数
x number number
n number number of bits
返回值
y number bitwise logical left-shifted number
例子
print(bit.lshift(1, 0)) --> 1
print(bit.lshift(1, 8)) --> 256
print(bit.lshift(1, 40)) --> 256
printx(bit.lshift(0x87654321, 12)) --> 0x54321000
通过第二个参数给定的位数返回其第一个参数的按位逻辑右移。 逻辑移位将第一个参数视为无符号数并移位 0 位。 仅使用移位计数的低 5 位(减少到范围 [0…31])。
例子
x number number
n number number of bits
返回值
y number bitwise logical right-shifted number
例子
print(bit.rshift(256, 8)) --> 1
print(bit.rshift(-256, 8)) --> 16777215
printx(bit.rshift(0x87654321, 12)) --> 0x00087654
通过第二个参数给定的位数返回其第一个参数的按位算术右移。 算术右移将最高有效位视为符号位并复制它。 仅使用移位计数的低 5 位(减少到范围 [0…31])。
例子
x number number
n number number of bits
返回值
y number bitwise arithmetic right-shifted number
例子
print(bit.arshift(256, 8)) --> 1
print(bit.arshift(-256, 8)) --> -1
printx(bit.arshift(0x87654321, 12)) --> 0xfff87654
按第二个参数给定的位数返回其第一个参数的按位左旋转。 从一侧移出的位在另一侧移回。 仅使用循环计数的低 5 位(减少到范围 [0…31])。
例子
x number number
n number number of bits
返回值
y number bitwise left-rotated number
例子
printx(bit.rol(0x12345678, 12)) --> 0x45678123
按第二个参数给定的位数返回其第一个参数的按位右旋。 从一侧移出的位在另一侧移回。 仅使用循环计数的低 5 位(减少到范围 [0…31])。
例子
x number number
n number number of bits
返回值
y number bitwise right-rotated number
例子
printx(bit.ror(0x12345678, 12)) --> 0x67812345
交换其参数的字节并返回它。 这可用于将小端 32 位数字转换为大端 32 位数字,反之亦然。
例子
x number number
返回值
y number bitwise swapped number
例子
printx(bit.bswap(0x12345678)) --> 0x78563412
printx(bit.bswap(0x78563412)) --> 0x12345678