v27-30.按位运算符(Bitwise operators)

1.introduction

顾名思义,按位进行操作。

实际上是一种运算规则!

3cc75eac98bb4e6da2876409ee08a1b0.png 

true = 1,false = 0。进行按位运算还是真假值的讨论。

2.按位and运算符:&

&一次需要两位进行and运算;是二元运算符,需要两个操作数。

类似列竖式,先将二进制写出来,进行真值表的运算。

79e8582c23384e2181abef40ad08c557.png

 3.按位or运算符:   |

运算法则:两个有一个为真,结果为真。

72a3a0af5a8041ae90cc18258fc596c4.png

4.按位not运算符 :~

一元运算符,只需要一个操作数。

88d6ed095e7147a4aaa4cc855ac5c089.png

 5.Bitwise 和 logical 的区别

d80c93c59200440eb8efd17a37c5efbd.png

if() 括号中如果为真则执行代码块;

0是false,非0是true。

6.左移运算符:<<

二元运算符,需要两个操作数

first operand(左操作数)  <<  second operand(右操作数)

第一个操作数的位左移,第二个操作数决定移位数。

6.1原理    当位左移时,尾随位置将用0填充。

352ff30f9148435b990d1ed3d5832c87.png

31748406f8d04b0cbd7007bc34338dc8.png 

6.2 左移相当于将数乘以2的 右操作数 次方。

facb23b6bbf141bf98f0b5c008c54d5d.png

7.右移运算符

二元运算符,需要两个操作数

First operand  >>  Second operand

第一个操作数的位右移,第二个操作数决定移位数。

7.1

ab6fd0e09133435c8e618d790ddfca8f.png

3d06b8ccd598485f9fd15a4f283e137a.png

 7.2

右移相当于除以 2的右移位数 次方(去掉小数点)。

54cfea2f58e44a778a8f462198b97412.png

 左乘  右除

8.按位异或运算符(XOR)

1fd56e2252ad4b2a8a1e9285ccca9329.png

 二元运算符,需要两个操作数。

可以将它独立为一个运算法则,

相同为0,不同为1。

6502a73a41f0430f8dc9aefcca76b005.png