zoukankan      html  css  js  c++  java
  • lua二进制操作函数

      由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个“bit”表中,使用时只要requre “bit”即可。

    bit.ashr - 带符号的按位右移

      此函数需要两个整数作为参数。第一个参数可以带有符号,是被以为的数,第二个参数是一个无符号整数,是向右移动的位数。在以为过程中,第一个参数的符合始终会被保留。

      例如:

      print (bit.ashr (-1024, 6)) --> -16

    bit.band - 按位“与”运算

      此函数需要一个或多个无符号整数作为参数,返回所有参数执行按位“与”运算后的结果。

      bit.band(a,b)即是a 和 b的按位与;

      例如:

      print (bit.band (18, 2)) --> 2

      print (bit.band (15, 7, 3)) --> 3

      print (bit.band (17, 10, 4)) --> 0

      bit.band(a,b,c)是a b c的互相按位与;

    bit.bor - 按位“或”运算

      此函数需要一个或多个无符号整数作为参数,返回所有参数执行按位“或”运算后的结果。

      例如:

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

    bit.mod - 取模函数 (得到整除后的余数)

      此函数需要两个整数作为参数。函数结果是两个数整除之后的余数。

      例如:

      print(bit.mod (17, 4))  --> 1

    bit.neg - 按位“非”运算

      此函数需要一个无符号整数作为参数,返回这个参数执行按位“非”运算后的结果。

      例如:

      print (bit.neg (1)) --> 4294967294

    bit.shl - 按位左移

      此函数需要两个无符号整数作为参数。第一个参数是被移位的数,第二个参数是向左移动的位数。

      例如:

      print (bit.shl (4, 6)) --> 256

    bit.shr - 按位右移

      此函数需要两个无符号整数作为参数。第一个参数是被移位的数,第二个参数是向右移动的位数。

      例如:

      print (bit.shr (1024, 6)) --> 16

    bit.tostring (n, base) - 把一个数字转换为字符串

      把一个数字根据指定的基数转换为字符串(大写形式)base 产生是可选的,默认为 10,其有效范围为 2 - 36。数字的小数部分会被忽略. 被转换的数字可以是负数,转换后会保留 "-" 符号。

      例如:

      print (bit.tostring (45035996273, 16)) -->  A7C5AC471

    bit.tonumber (s, base) - 把字符串转换为一个数字

      把一个字符串形式的数字转换为相应的数字。和标准 Lua tonumber 函数不一样的是此函数可以处理高达 52 bit 的数字(Lua 默认的函数只能处理 32 bit 的数字)。

      例如:

      print (bit.tonumber ("A7C5AC471", 16)) -->  45035996273

      base 参数是可选的,指明了转换的基数,默认为 10。base 的有效范围是 2 - 36。此函数不支持小数,也不支持指数表示形式的整数(例如 10.24e15)。如果一定要使用这样的数,你只有使用 Lua 自带的 tonumber 函数了。

      由于计算机对浮点数的限制,字符串能转换的数字不能超过 52 bit,例如:十六进制 FFFFFFFFFFFFF (十进制 4503599627370495)。

      字符串开始的空白字符会自动被忽略,实际数字前面可以有一个 + 或者 - 号。

    bit.xor - 按位“异或”运算

      此函数需要一个或多个无符号整数作为参数,返回所有参数执行按位“异或”运算后的结果。

      例如:

      print (bit.xor (15, 1)) --> 14

  • 相关阅读:
    NOIP201310华容道
    NOIP201110观光公交
    markdown
    【NOIP2016】愤怒的小鸟
    【NOIP2016】组合数问题
    [TJOI2019]唱,跳,rap,篮球(生成函数,组合数学,NTT)
    CF1217E Sum Queries? (线段树)
    CF1178F Short/Long Colorful Strip(DP)
    ZROI 暑期高端峰会2019 总结
    [HNOI2012]集合选数(构造,状态压缩,DP)
  • 原文地址:https://www.cnblogs.com/jadeboy/p/4038332.html
Copyright © 2011-2022 走看看