位运算——与、或、非、异或、左移、右移

一、与(&或(|)、~、异或(^)、左移(<<)、右移(>>)

例子:

A00111100

B00001101

A & B     与 ,      全 1 1,                                           A & B = 00001100

A | B,       或,       有 1 1,                                           A | B  = 00111101

~ A ,           非,        取反,                                                 ~A  = 11000011

A ^ B,      异或,    相同为 0,不同为 1                         A ^ B = 00110001

A << 2    左移,    左边丢弃, 右边补0                               A << 2 = 11110000

A >> 2,       右移,    符号位不变(01负),右边丢弃        B >> 2 = 00000011

如下图所示:

 

二、逻辑操作与位操作的区别

逻辑与(&&) 逻辑或(||)  按位与(&)  按位或(|

操作 运算规则 区别
&&是逻辑与 判断&&两侧的表达式是否都为真,都为真则此&&表达式值为真; 逻辑与结果只讲真1和假0
& 是按位与 将&两侧的数用二进制展开,每一位都求与运算(二进制与运算,跟逻辑与差不多),最后得到的二进制数即为结果; 按位与得出的却是实实在在的一个数
 | | 是逻辑或 判断 | | 两侧的表达式是否为真,若有一个为真则此| | 表达式值为真; 逻辑或结果只讲真1和假0
是按位或 将|两侧的数用二进制展开,每一位都求或运算(二进制或运算,跟逻辑或差不多),最后得到的二进制数即为结果; 按位或得出的却是实实在在的一个数

eg:

       逻辑与和按位与的区别:1&&2-----------=1   1&2----------=0  
       逻辑或和按位或的区别:1 | | 2------------=1  1 | 2----------=3  

发布了21 篇原创文章 · 获赞 16 · 访问量 8357

猜你喜欢

转载自blog.csdn.net/rentan0930/article/details/89671982