一、与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)
例子:
A:00111100
B:00001101
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, 右移, 符号位不变(0正1负),右边丢弃 B >> 2 = 00000011
如下图所示:
二、逻辑操作与位操作的区别
逻辑与(&&) 逻辑或(||) 按位与(&) 按位或(|)
操作 | 运算规则 | 区别 |
&&是逻辑与 | 判断&&两侧的表达式是否都为真,都为真则此&&表达式值为真; | 逻辑与结果只讲真1和假0 |
& 是按位与 | 将&两侧的数用二进制展开,每一位都求与运算(二进制与运算,跟逻辑与差不多),最后得到的二进制数即为结果; | 按位与得出的却是实实在在的一个数 |
| | 是逻辑或 | 判断 | | 两侧的表达式是否为真,若有一个为真则此| | 表达式值为真; | 逻辑或结果只讲真1和假0 |
| 是按位或 | 将|两侧的数用二进制展开,每一位都求或运算(二进制或运算,跟逻辑或差不多),最后得到的二进制数即为结果; | 按位或得出的却是实实在在的一个数 |
eg:
逻辑与和按位与的区别:1&&2-----------=1 1&2----------=0
逻辑或和按位或的区别:1 | | 2------------=1 1 | 2----------=3