位运算符学习一
来源:互联网 发布:贰婶悟空歌词知乎 编辑:程序博客网 时间:2024/06/05 11:42
在网上看到的关于位运算符的学习,留作以后看的记录
位运算基本技巧:
1、与操作:
将a指定位i清零
<span style="white-space:pre"></span>int clear(int a,int i){ return a &= ~(1<<i);//1左移i位,取反其他为均为1<span style="white-space:pre"></span>}
<span style="color:#ff0000;">获取指定位的值</span>
int get( int a,int i){ return a&(1<<i); }保留某些位不变
a & 0xFF;//保留低八位不变
boolean isPow2(int a){//2的幂的二进制只有一个1,减一之后,除了最高位其他位均为1,如:8=1000,7=111; return a&(a-1)==0 && a!=0;}奇偶性判断
boolean isOdd(int a){ return a&1==1;//a的最后一位是否是1,判断偶数,将==改为!=}2、或操作
设定指定位的值
int set(int a,int i ){ return a |= (1<<i);//将指定i位设置为1}3、相反数
//取反加一int oppsite(int a){ return ~a+1;}
<strong><span style="font-size:18px;">4、异或(比较两个值:相同为0,不同为1)</span></strong>
<span style="font-size:14px;color:#ff0000;">不借用第三个值,交换两个值(常用的第三个值,可以比较非整数)</span>
void swap(int a,int b){<span style="white-space:pre"></span>//a=10;b=01; a = a^b;<span style="white-space:pre"></span>//a=a^b=11; b = a^b;<span style="white-space:pre"></span>//b=11^01=10;
a = a^b;<span style="white-space:pre"></span>//a=11^10=01}指定位取反:
void reverse(int& a,int i) {
a^=(1<<i);//0^1=1,1^1=0
};
0 0
- 位运算符学习一
- 位运算学习(一)
- java学习笔记(一)----位运算符与逻辑运算符
- 位运算符(一):C/C++位运算符
- 位运算符(一):C/C++位运算符
- 位运算符学习笔记
- 位运算操作符详解一
- 位运算艺术(一)
- 位运算艺术(一)
- 位运算艺术(一)
- 位运算(一)
- 一、C++ 位运算
- C++学习笔记(一) 位运算详解
- Java学习笔记(位运算符)
- 第十节 java学习 位运算符
- Java学习之位运算符
- java学习07--位运算符
- Java学习之-位运算符
- 对可能用到的类做前置声明
- alipay--- Android 集成支付宝SDK实现快捷支付--详解
- Gradle的基本使用(三)
- 【找规律】HDU1210Eddy's 洗牌问题
- libSVM(Java)二次开发接口调用及更改的文档
- 位运算符学习一
- linux 命令
- 我要写代码——跨过程序员的门槛(4)
- 数字签名的具体代码应用过程以及步骤
- 中缀表达式转换成后缀
- TCP/IP详解学习笔记--TCP(传输控制协议)
- C++ string类
- Android ViewPager切换的N种动画
- n皇后问题