加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua中的“按位与”

发布时间:2020-12-14 21:47:30 所属栏目:大数据 来源:网络整理
导读:我正在尝试将代码从C转换为Lua,我遇到了问题. 如何在Lua中翻译按位AND? 源代码包含: if((command 0x80)== 0) ???… 怎么能在Lua做到这一点? 我正在使用Lua 5.1.4-8 解决方法 这是纯Lua 5.1中基本的,孤立的按位和实现: function bitand(a,b) local result
我正在尝试将代码从C转换为Lua,我遇到了问题.
如何在Lua中翻译按位AND?
源代码包含:

if((command& 0x80)== 0)
???…

怎么能在Lua做到这一点?

我正在使用Lua 5.1.4-8

解决方法

这是纯Lua 5.1中基本的,孤立的按位和实现:

function bitand(a,b)
    local result = 0
    local bitval = 1
    while a > 0 and b > 0 do
      if a % 2 == 1 and b % 2 == 1 then -- test the rightmost bits
          result = result + bitval      -- set the current bit
      end
      bitval = bitval * 2 -- shift left
      a = math.floor(a/2) -- shift right
      b = math.floor(b/2)
    end
    return result
end

用法:

print(bitand(tonumber("1101",2),tonumber("1001",2))) -- prints 9 (1001)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读