# Bitwise

### Bitwise essentials

• bitwise perform operations on individual bits of values
• used for testing and setting of individual bit flags in values
• if any of arguments is long, the result is long
• otherwise, the result is int

### Bitwise complement (NOT) (~)

What is it: operator

Type: unary

Looks like: ~

A.k.a. bitwise complement, NOT

Numbers of operands: 1

Action: inverts each byte of operand, converts 1 to 0 and vice versa

Name in logic: negation

``````byte b = ~15

~00001111
_________
11110000

result in 2's complement decimal: -16

``````

Bitwise complement can be executed on flags (to be continued).

### Bitwise AND (&)

What is it: operator

Type: binary

Looks like: &

A.k.a. AND

Numbers of operands: 2

Action: boolean AND operation on individual bits of both operands - if a bit is set (positive, 1) in both operands, the result also has the bit set; otherwise it is 0

Name in logic: conjunction

``````binary:
00001010 & 00000111 = 00000010

decimal:
11 & 6 = 2

00001011 &
00000110
________
00000010

``````

### Bitwise OR (|)

What is it: operator

Type: binary

 Looks like: ( )

A.k.a. OR

Numbers of operands: 2

Action: boolean OR operation on individual bits of both operands - if a bit is set (positive, 1) in at least one operand, the result is also positive.

Name in logic: alternative

``````binary:
00001010 | 00000111 = 00001111

decimal:
11 | 6 = 15

00001011 |
00000110
________
00001111
``````

### Bitwise XOR (^)

What is it: operator

Type: binary

Looks like: ^

A.k.a. XOR

Numbers of operands: 2

Action: boolean XOR operation on individual bits of both operands. The result is positive (bit is set, 1) if corresponding bits in both operands are different.

Name in logic: exclusive alternative

``````binary:
00001010 ^ 00000111 = 00001101

decimal:
11 ^ 6 = 13

00001011 ^
00000110
________
00001101
``````

Tags:

Categories:

Updated: