There are 6 bit operations: 7 P "@ 3 D5 Q ']

&And operation 5 J5 W: I! o% L/ ]

|Or operation

^Exclusive or operation! {$ V2 U b; h. Y- ?8 p" e

~Non operation (complement)

Shift right operation

< < left shift operation

- r, S
*! T)*1 Y/ ^2 P

And operation (&) (P "G & E5 ~ / J # U * s' l

Binocular operation. When both bits are set (equal to 1), the result is equal to 1, and the other results are equal to 0* W+ U/ q9 W: h; |: v1 ]9 V

1 & 1 == 1

1 & 0 == 0

0 & 1 == 0

0 & 0 == 0 + ~! | {1 u* x( n/ N/ O

8 e% n& Q0 }; ?! t" g f i8 C

One use of the and operation is to check whether the specified bit is set (equal to 1). For example, there is an identification bit in a byte. To check whether the fourth bit is set, the code is as follows: 4 Z - J ^ 8 y '@ (F: G

BYTE b = 50; , v# z. m8 l# }4 s6 l3 e# S

if ( b & 0x10 ) " x; n, c4 Z. u: J- }

cout << "Bit four is set" << endl;

else

cout << "Bit four is clear" << endl;

The above codes can be expressed as:

- R; D2 m ~5 m q! M

00110010 - b

& 00010000 - & 0x10 9 ^" p0 k7 N& t* [

---------------------------- 9 k5 K$ k$ m" s, K9 k

00010000 - result , ^+ D* p7 v/ f2 q3 h+ l

( n# ]+ t1 a! x0 Q5 j) g

It can be seen that the fourth bit is set.

Or operation (|)

Binocular operation. As long as there is one position bit between the two bits, the result is equal to 1. When both bits are 0, the result is 0.

1 | 1 == 1 4 u9 }1 j# P( r

1 | 0 == 1 9 J4 g. H3 X8 r$ z" h, B5 K

0 | 1 == 1 2 A/ K+ R9 B0 W0 D* o& g

0 | 0 == 0 ( # j# L* V6 R8 M7 A+ C

8 l6 q; g7 T5 u7 {+ P, @9 a+ N

The and operation can also be used to check the setting. For example, to check whether the 3rd bit of a value is set: * e & U6 m! j; r; l2 Y+ }

BYTE b = 50;

BYTE c = b | 0x04; . }. y) i$ A9 Z' M

cout << "c = " << c << endl; & }% a7 `4 p$ j& F7 g# ~

It can be expressed as + I. X - a a! i: u1 `7 m3 {

; B } V4 f5 i6 x$ s

00110010 - b ) \6 p0 P$ W5 S( r+ k! Z! h

| 00000100 - | 0x04

---------- ! {0 J3 g) {& R y

00110110 - result

Exclusive or (^) $[3 P / D (F, u # C6 J8 f

Binocular operation. When the two bits are not equal, the result is 1; otherwise, it is 0.

1 ^ 1 == 0 $ y5 s( i; d" B

1 ^ 0 == 1 o' J( Z( `, ~9 X' F

0 ^ 1 == 1

0 ^ 0 == 0 - N' a( |; N2 z |9 m2 T

; e9 T5 k$ e6 {. N- u$ r

The exclusive or operation can be used for bit value inversion. For example, flip the values of the 3rd and 4th bits: