位运算总结
来源:互联网 发布:设计模式php 编辑:程序博客网 时间:2024/05/01 09:34
1. &(与)运算
0 & 0 = 0 1 & 0 = 0 0 & 1 = 0 1 & 1 = 1
2的二进制为10,4的二进制位100,2与4进行&运算为
010
110
结果: 010
2. |(或)运算
0 & 0 = 0 1 & 0 = 1 0 & 1 = 1 1 & 1 = 1
2的二进制为10,4的二进制位100,2与4进行|运算为
010
110
结果: 110
3. ^(异或)运算
0 & 0 = 0 1 & 0 = 1 0 & 1 = 1 1 & 1 = 0
2的二进制为10,4的二进制位100,2与4进行^运算为
010
110
结果: 100
4. ~(取反)运算
~0 = 1 ~1 = 0
2的二进制位10,取反操作结果为01
5. <<(左移)运算
m<<n,表示m的二进制向左移n位,左移之后右边补0
6. >>(右移)运算
右移运算符m>>n表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。
参考:http://www.cnblogs.com/heyonggang/p/3311128.html
位运算的使用
1.&运算的使用
(1)求一个数是否是2的阶次方数
思路:如果一个数是2的阶次方数,那么它的二进制首位一般是1,后面是若干个0,如8的二进制位1000,如果将这个数减一之后,再与该数做与运算,那么应该全为0,1000减一之后为0111,1000&0111=0000,所以可以使用((number-1)&number)是否为0判断。
#include<iostream>using namespace std;bool IsPowerOfTwo(int number){if(number<=0)return false;if(((number-1)&(number))==0)return true;elsereturn false;}int main(){int number=0;scanf("%d",&number);cout<<IsPowerOfTwo(number)<<endl;return 0;}
(2)判断一个数的二进制中1的个数
http://bbs.csdn.net/forums/Mobile
- 位运算总结
- 常用位运算总结
- 位运算总结
- 位运算总结
- C位运算总结
- 位运算总结
- 常用位运算总结
- 位运算总结
- 位运算超强总结
- 位运算技巧总结
- 位运算总结
- 位运算要点总结
- 常用位运算总结
- 位运算总结
- 位运算总结
- 位运算总结
- 位运算总结
- 位运算总结
- Java中文验证码
- java AtomicInteger
- spring学习笔记(10)——工厂方法配置bean
- robotium 黑盒 获取id点击控件
- 第24讲-项目三:一元二次方程全解
- 位运算总结
- js 调用oc——webView
- PHP操作证书
- iOS分析UI利器—Reveal及简单破解方法
- linux 常用命令
- AIO 简介
- 黑马程序员——Java高新技术——反射(续)、成员方法的反射、数组的反射、Hashcode方法分析、类加载器等
- [转载]Runnable接口与Thread类的区别
- HDU2896 病毒侵袭 AC自动机