位运算应用例子
来源:互联网 发布:linux rar文件不能解压 编辑:程序博客网 时间:2024/05/21 23:32
1. 两个数交换
local a = 2
local b = 4
--------异或
a = bit.bxor(a,b)
b = bit.bxor(b,a)
a = bit.bxor(a,b)
2.比较大小
function VipRoomLayer:cmpshirt(n)
local _a = n
_a = bit.bor(_a,bit.brshift(_a,1))
_a = bit.bor(_a,bit.brshift(_a,4))
_a = bit.bor(_a,bit.brshift(_a,8))
_a = bit.bor(_a,bit.brshift(_a,16))
return _a
end
function VipRoomLayer:cmp(n , m)
print("bit.bxor(n,m)",bit.bxor(n,m))
local a = bit.band(n,bit.bxor(n,m)) -- 0
local b = bit.band(m,bit.bxor(n,m)) -- 1
-------右移
a = self:cmpshirt(a) --第一个不同的位后的首个‘1’开始,将右边的位全置
b = self:cmpshirt(b)
print(string.format("a = %d b = %d",a,b))
-- bit.band bit.bxor bit.brshift bit.bor bit.band bit.bxor
do
--把a中自首个不相同的位起,之后的位全清零
a = bit.band(a,bit.brshift(bit.bxor(a,b),1))
a = bit.band(a,bit.bxor(bit.bxor(a,b),bit.brshift(bit.bxor(a,b),1)))
a = bit.band(b,(bit.bxor(a,b)))
a = bit.bor(bit.band(bit.brshift(b,31),1),a) -- 把b的符号位加到a的最低位
a = bit.band(a,2147483647) --清除a的符号位
end
print("a 的值是,b是",n,m)
print("大小是 a > b ",(a == 0 and '相等' or not(a > 0) and true or false))
end
3.bit.band
判断奇偶(按位与)
一个数 and 1 如果末位是1 则为奇数 如
9 --------0000 1001
9 and 1
0000 1001
0000 0001
=========
0000 0001
4.判断该数是否为2的次幂
n = 4
n_ - 1 = 3
bit.band(bit.band(n,n -1) ,n) 如果结果为0的话就是2的n次幂
按位与计算
4----------0000 0101
3----------0000 0100
4 and 3
0000 0101
0000 0100
=============
0000 00000
- 位运算应用例子
- java位运算例子
- 位运算例子
- 位运算 几个例子
- 位运算的应用
- 位运算应用
- 位运算应用2
- 位运算的应用
- 位运算应用技巧
- 位运算应用技巧
- 位运算的应用
- 位运算应用
- 位运算应用口诀
- 位运算及应用
- 位运算应用技巧
- 位运算应用
- 位运算的应用
- java位运算应用
- 关于userInteractionEnabled的属性的理解
- cocoscreator开发问题记录
- 初识Node.js
- Retinex实验效果图和图片格式转化的失真问题
- android push需要安装的apk到system/app以及删除system/app下的apk
- 位运算应用例子
- linux命令dd
- Android如何调用第三方SO库
- theano学习笔记(一) :Win10+VS2013+Anaconda避坑安装完整教程
- Tkinter教程之Label篇
- 试发一波a+b
- Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-3.1.xsd)
- $_POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
- RTP协议全解析(H264码流和PS流)