> 文档中心 > 位运算的 介绍

位运算的 介绍


关于我为了学会 双指针 先把 位运算搞懂的 下午

位运算 包括 &  |  ^  ~  <>六种运算符

(纯个人笔记:详细了解请看参考 一 ,二)

 

目录

一:&与运算

二.|或运算

三.^异或运算

四.取反运算符 (~)

五.左移运算符(<<)

六.右移运算符(>>)

参考:


一:&与运算

        

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)