lua位操作(感觉这效率较低)
来源:互联网 发布:网络远程教育报名 编辑:程序博客网 时间:2024/06/07 03:24
--[[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)endfunction 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 trend --bit:d2bfunction bit:b2d(arg) local nr=0 for i=1,32 do if arg[i] ==1 then nr=nr+2^(32-i) end end return nrend --bit:b2dfunction bit:_xor(a,b) local op1=self:d2b(a) local op2=self:d2b(b) local r={} for i=1,32 do if op1[i]==op2[i] then r[i]=0 else r[i]=1 end end return self:b2d(r)end --bit:xorfunction bit:_and(a,b) local op1=self:d2b(a) local op2=self:d2b(b) local r={} for i=1,32 do if op1[i]==1 and op2[i]==1 then r[i]=1 else r[i]=0 end end return self:b2d(r)end --bit:_andfunction bit:_or(a,b) local op1=self:d2b(a) local op2=self:d2b(b) local r={} for i=1,32 do if op1[i]==1 or op2[i]==1 then r[i]=1 else r[i]=0 end end return self:b2d(r)end --bit:_orfunction bit:_not(a) local op1=self:d2b(a) local r={} for i=1,32 do if op1[i]==1 then r[i]=0 else r[i]=1 end end return self:b2d(r)end --bit:_notfunction bit:_rshift(a,n) local op1=self:d2b(a) local r=self:d2b(0) if n < 32 and n > 0 then for i=1,n do for i=31,1,-1 do op1[i+1]=op1[i] end op1[1]=0 end r=op1 end return self:b2d(r)end --bit:_rshiftfunction bit:_lshift(a,n) local op1=self:d2b(a) local r=self:d2b(0) if n < 32 and n > 0 then for i=1,n do for i=1,31 do op1[i]=op1[i+1] end op1[32]=0 end r=op1 end return self:b2d(r)end --bit:_lshiftfunction bit:print(ta) local sr="" for i=1,32 do sr=sr..ta[i] end print(sr)endbs=bit:d2b(7)bit:print(bs)-->00000000000000000000000000000111bit:print(bit:d2b(bit:_not(7)))-->11111111111111111111111111111000bit:print(bit:d2b(bit:_rshift(7,2)))-->00000000000000000000000000000001bit:print(bit:d2b(bit:_lshift(7,2)))-->00000000000000000000000000011100print(bit:b2d(bs)) --> 7print(bit:_xor(7,2)) --> 5print(bit:_and(7,4)) --> 4print(bit:_or(5,2)) --> 7--end of bit.lua
0 0
- lua位操作(感觉这效率较低)
- [MySQL优化] -- 如何定位效率较低的SQL
- [MySQL优化] -- 如何定位效率较低的SQL
- [MySQL优化] -- 如何定位效率较低的SQL
- MYSQL:使用慢查询日志定位效率较低的SQL语句
- MYSQL:使用慢查询日志定位效率较低的SQL语句
- 两种方式定位执行效率较低的SQL 语句
- 自创的效率较低的排序算法,纯为了练习
- MySQL中使用子查询IN效率较低的问题
- MySQL优化:使用慢查询日志定位效率较低的SQL语句
- 106_容器_自己实现HashMap_MyMap原始版_效率较低
- lua中位运算操作
- lua中位运算操作
- cocos2d-x lua 位操作
- 一个较完整的LUA COCOS2DX 操作“类”
- 纯Lua实现的位操作
- 位操作,获取和设置特定位的值,效率
- 效率太低了
- 关于android ndk出现ReferenceTable overflow (max=1024)的解决方法
- iOS 检测版本更新
- 利用crtmpserver搭建rtmp服务器
- 大数据的分析
- C/C++中near和far的区别
- lua位操作(感觉这效率较低)
- Linux下安装VNC图形化远程桌面工具
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 定时任务:Java中Timer和TimerTask的使用
- 【水读入】#56 A. Where Are My Flakes?
- 微课件快速开发方案
- JSTL EL 遍历后台的Map
- python 两数相除求频率
- easyui tree的一些常见操作