Lua不同版本下的位操作

Lua不同版本下的位操作

Lua提供对变量的位操作,虽然可能不如直接用底层C实现起来效率高,但是聊胜于无吧.Lua历经几个大的版本变更,每个版本对应的位操作方式也是略有不同,本文主要记录lua 5.0 版本之后的各种位操作方法。

Lua 5.1版本

Lua 5.1版本使用一个外部的bitlib库,提供几个位操作函数。

使用:

-- 引入bit库
require "bit"

-- and操作
bit.band(a,b)
-- or操作
bit.bor(a,b)
-- xor操作
bit.bxor(a,b)
-- not操作
bit.bnot(a,b)
-- 左移n位
bit.lshift(a,n)
-- 右移n位
bit.rshift(a,n)

Lua 5.2版本

Lua 5.2版本提供了一个内置库bit32,同样以函数的形式提供位操作。

使用

-- 引入内置bit32库
require "bit32"

-- and操作
bit32.band(a,b)
-- or操作
bit32.bor(a,b)
-- xor操作
bit32.bxor(a,b)
-- not操作
bit32.bnot(a,b)
-- 左移n位
bit32.lshift(a,n)
-- 右移n位
bit32.rshift(a,n)

Lua 5.3版本

自Lua 5.3版本后,Lua像其他语言一样开始提供内置操作符实现位操作,但是操作符代表的含义可能与C++\Python之类的略有不同。

使用

-- and操作
a & b
-- or操作
a | b
-- xor操作
a ~ b
-- not操作
~a
-- 左移n位
a << n
-- 右移n位
a >> n

你可能感兴趣的:(lua)