• lua基础之位操作


    Bitwise operations

    bit.tobit(x)

    将数字规范化为位操作的数字范围并返回它。 通常不需要此函数,因为所有位操作都已经规范化了它们的所有输入参数。

    参数

    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


    bit.tohex(x,n)

    将其第一个参数转换为十六进制字符串。 十六进制数字的数量由可选的第二个参数的绝对值给出。 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


    bit.bnot(x)

    返回其参数的按位非。

    参数

    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


    bit.bor(x1,[x2…])

    返回其所有参数的按位或。 请注意,允许使用两个以上的参数。

    参数

    x1 number number
    [x2…] number number(s)

    返回值

    y number bitwise or of the provided arguments
    例子

    print(bit.bor(1, 2, 4, 8)) --> 15


    bit.band(x1,[x2…])

    返回其所有参数的按位和。 请注意,允许使用两个以上的参数。

    参数

    x1 number number
    [x2…] number number(s)

    返回值

    y number bitwise and of the provided arguments

    例子

    printx(bit.band(0x12345678, 0xff)) --> 0x00000078


    bit.bxor(x1,[x2…])

    返回其所有参数的按位异或。 请注意,允许使用两个以上的参数。

    参数

    x1 number number
    [x2…] number number(s)

    返回值

    y number bitwise xor of the provided arguments

    例子

    printx(bit.bxor(0xa5a5f0f0, 0xaa55ff00)) --> 0x0ff00ff0


    bit.lshift(x,n)

    通过第二个参数给定的位数返回其第一个参数的按位逻辑左移。 逻辑移位将第一个参数视为无符号数并移位 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


    bit.rshift(x,n)

    通过第二个参数给定的位数返回其第一个参数的按位逻辑右移。 逻辑移位将第一个参数视为无符号数并移位 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


    bit.arshift(x,n)

    通过第二个参数给定的位数返回其第一个参数的按位算术右移。 算术右移将最高有效位视为符号位并复制它。 仅使用移位计数的低 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


    bit.rol(x,n)

    按第二个参数给定的位数返回其第一个参数的按位左旋转。 从一侧移出的位在另一侧移回。 仅使用循环计数的低 5 位(减少到范围 [0…31])。

    例子

    x number number
    n number number of bits
    返回值

    y number bitwise left-rotated number

    例子

    printx(bit.rol(0x12345678, 12)) --> 0x45678123


    bit.ror(x,n)

    按第二个参数给定的位数返回其第一个参数的按位右旋。 从一侧移出的位在另一侧移回。 仅使用循环计数的低 5 位(减少到范围 [0…31])。

    例子

    x number number
    n number number of bits

    返回值

    y number bitwise right-rotated number

    例子

    printx(bit.ror(0x12345678, 12)) --> 0x67812345


    bit.bswap(x)

    交换其参数的字节并返回它。 这可用于将小端 32 位数字转换为大端 32 位数字,反之亦然。

    例子

    x number number

    返回值

    y number bitwise swapped number

    例子

    printx(bit.bswap(0x12345678)) --> 0x78563412
    printx(bit.bswap(0x78563412)) --> 0x12345678

  • 相关阅读:
    【LeetCode】2511.最多可以摧毁的敌人城堡数目
    数据库1(新手易懂,超详细)
    计算机毕业论文选题微信小程序毕业设计论文SSM食堂订餐点餐项目+后台管理系统|前后分离VUE[包运行成功]
    递归--回溯法--N皇后问题
    HashMap中的put()和get()的实现原理
    给定一个整数数组 nums 和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
    SAP中维修备件(库存物料)可以向一次性供应商采购吗?
    flink核心思想
    【应用多元统计分析】上机二 判别分析
    爬虫 — Js 逆向案例四网易云音乐评论
  • 原文地址:https://blog.csdn.net/a_codecat/article/details/127950021