位运算的 介绍
关于我为了学会 双指针 先把 位运算搞懂的 下午
位运算 包括 & | ^ ~ <>六种运算符
(纯个人笔记:详细了解请看参考 一 ,二)
目录
一:&与运算
二.|或运算
三.^异或运算
四.取反运算符 (~)
五.左移运算符(<<)
六.右移运算符(>>)
参考:
一:&与运算
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
可用于:
奇偶的判断
if(变量&1==1){
奇数
} else{
偶数
}
0&0=0 0&1=0 1&0=0 1&1=1
3&5 即 0000 0011& 0000 0101 = 0000 0001,因此 3&5 的值得1。
二.|或运算
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
三.^异或运算
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
0^0=0 0^1=1 1^0=1 1^1=0
或运算的交换律:
oid Swap(int &a, int &b){ if (a != b){ a ^= b; b ^= a; a ^= b; }}
例如:1010 1110 ^ 0000 0000 = 1010 1110
所有的:负数按补码形式参加按位或运算,(可于参考二中详尽了解)
四.取反运算符 (~)
取反 即 真变假:假变真;
五.左移运算符(<<)
相当于*2;
六.右移运算符(>>)
相当于/2;
&= 例:a&=b 相当于 a=a&b|= 例:a|=b 相当于 a=a|b>>= 例:a>>=b 相当于 a=a>>b<<= 例:a<<=b 相当于 a=a<<b^= 例:a^=b 相当于 a=a^b
这些 运算的 实现 本质上 其实 就是运用了 运算符的性质,这些运算符号是贴近计算机的二进制计数的,所以效率,才快。
参考:
一.位运算(&、|、^、~、>>、 | 菜鸟教程 (runoob.com)
二 原码, 反码, 补码 详解 - ziqiu.zhang - 博客园 (cnblogs.com)