位运算应用
来源:互联网 发布:手机激光测距软件 编辑:程序博客网 时间:2024/06/04 01:10
位运算应用
按位移动: (>>, <<)。
按位与: (&)全一为一,否则为零。
应用:
1. 判断一个数的奇偶性。(x&1) 【101 & 1 = 1】
2. 判断x是否是2的正整数冪。(x&(x-1)) 【100 & 011 = 0】
3. 取出一个数的某些二进制位。
3.1.(x&(1 << (d-1)))【10101 & (1 << (3-1)) = 00100】取第d位
3.2.(x&((1 << d)-1))【10101 & ((1 << 3)-1) = 00101】取最后d位, x对2^d取模
2. 判断x是否是2的正整数冪。(x&(x-1)) 【100 & 011 = 0】
3. 取出一个数的某些二进制位。
3.1.(x&(1 << (d-1)))【10101 & (1 << (3-1)) = 00100】取第d位
3.2.(x&((1 << d)-1))【10101 & ((1 << 3)-1) = 00101】取最后d位, x对2^d取模
4. 取出一个数的最后一个二进制位1。(x & -x)【10100 & (01100) = 4】最后一个二进制位是第三位
/*******状态变化
得到一个数的所有少一个二进制位1的子集。
for( i = x ; i > 0 ; i -= (i & -i) )
aim = x & ~(i & -1);
得到一个数的所有二进制子集。
for (i = x ; i > 0 ; i = (i - 1) & x)
aim = i;
*******/
/*******状态变化
得到一个数的所有少一个二进制位1的子集。
for( i = x ; i > 0 ; i -= (i & -i) )
aim = x & ~(i & -1);
得到一个数的所有二进制子集。
for (i = x ; i > 0 ; i = (i - 1) & x)
aim = i;
*******/
按位或: (|)有一为一,否则为零。
应用:
1. 将一个数的某些二进制位设为1。(x|(1 << (d-1)))
按位取反: (~)是一为零,是零为一。
按位异或: (^)不同为一,相同为零。
应用:
1. 将一个数的某些二进制位取反。(x^(1 << (d-1)))
2. 不使用中间变量交换两个数:a=a^b;b=a^b;a=a^b; 【可以理解:a = a^(b^b) && b = (a^a)^b】
0 0
- 位运算的应用
- 位运算应用
- 位运算应用2
- 位运算的应用
- 位运算应用技巧
- 位运算应用技巧
- 位运算的应用
- 位运算应用
- 位运算应用口诀
- 位运算及应用
- 位运算应用技巧
- 位运算应用
- 位运算的应用
- java位运算应用
- 位运算及其应用
- 位运算的应用
- 位运算应用
- 位运算的应用
- 名词解析
- 登陆界面测试用例设计
- Idea配置spark开发环境
- java集合框架02——Collection架构与源码分析
- 多图片上传预览功能
- 位运算应用
- R语言聚类算法之系谱聚类(Hierarchical Method)
- imx6 device tree lvds屏配置
- C# 文件压缩与解压(ZIP格式)
- 前端开发基础学习笔记html标签
- Java中通过注解+反射拿到对象的属性和方法
- 十大Intellij IDEA快捷键
- Infobright
- Meta 基础知识