lua中位运算操作

本文详细介绍了 Lua 语言中的位运算操作,包括按位与、按位或、按位异或、按位非、左移和右移等基本操作,并通过实例解析其用法和应用场景。
摘要由CSDN通过智能技术生成
--[[
Description:
    FileName:bit.lua
    This module provides a selection of bitwise operations.
History:
    Initial version created by  阵雨 2005-11-10.
Notes:
  ....
]]
--[[{2147483648,1073741824,536870912,268435456,134217728,67108864,33554432,16777216,
        8388608,4194304,2097152,1048576,524288,262144,131072,65536,
        32768,16384,8192,4096,2048,1024,512,256,128,64,32,16,8,4,2,1}
        ]]


bit={data32={}}
for i=1,32 do
    bit.data32[i]=2^(32-i)
end

function bit:d2b(arg)
    local   tr={}
    for i=1,32 do
        if arg >= self.data32[i] then
        tr[i]=1
        arg=arg-self.data32[i]
        else
        tr[i]=0
        end
    end
    return   tr
end   --bit:d2b

function    bit:b2d(arg)
    local   nr=0
    for i=1,32 do
        if arg[i] ==1 then
        nr=nr+2^(32-i)
        end
    end
    return  nr
end   --bit:b2d

function    bit:_xor(a,b)
    local   op1&
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Lua 是一种轻量级的脚本语言,虽然它不是主要用于底层硬件操作的语言,但其设计允许一定程度的性能优化,包括位操作。在 Lua ,位操作符用于对二进制数进行基本的逻辑和算术操作,主要分为两类:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)以及左(<<)和右(>>)。 1. **按位与(&)**: 对两个操作数的每个对应位执行 AND 运算,结果为 0 或 1,取决于两个输入位是否都为 1。 2. **按位或(|)**: 对两个操作数的每个对应位执行 OR 运算,结果为 0 或 1,取决于两个输入位至少有一个为 1。 3. **按位异或(^)**: 对两个操作数的每个对应位执行 XOR 运算,结果为 0 当两个输入位相同时,为 1 否则。 4. **按位取反(~)**: 将操作数的每个位反转,0 变为 1,1 变为 0。 5. **左(<<)**: 把第一个操作数的所有位向左动指定的位数,右侧用 0 填充。 6. **右(>>)**: 如果第二个参数是非负,则把第一个操作数的各位向右动指定的位数,右侧用原最高位填充;如果第二个参数为负,相当于左补零。 这些操作通常用于处理像颜色、标志位等二进制数据,或者是为了提高某些计算的效率。然而,在 Lua ,因为其动态类型系统,不强制类型检查,所以不像 C/C++ 那样频繁使用位操作。在实际应用,它们更多地作为开发者的一种工具,而不是程序设计的核心部分。如果你有关于 Lua 操作的具体问题或应用场景,可以继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值