Bitwise operators treat their operands as 32-bit binary integers (zeros and ones) rather than standard floating-point numbers, performing operations directly at the bit level.
flowchart LR
BitOps["Bitwise Operators (32-Bit Integers)"] --> AND["Bitwise AND (&)"]
BitOps --> OR["Bitwise OR (|)"]
BitOps --> XOR["Bitwise XOR (^)"]
BitOps --> NOT["Bitwise NOT (~)"]
BitOps --> Shifts["Shifts: Left (<<), Sign-Right (>>), Zero-Fill-Right (>>>)"]
| Operator | Name | Bit Rule | Example (5 = 0101, 3 = 0011) |
Result |
|---|---|---|---|---|
& |
Bitwise AND | Both bits must be 1. |
5 & 3 (0101 & 0011 -> 0001) |
1 |
| |
Bitwise OR | Either bit is 1. |
5 | 3 (0101 | 0011 -> 0111) |
7 |
^ |
Bitwise XOR | Bits must be different. | 5 ^ 3 (0101 ^ 0011 -> 0110) |
6 |
~ |
Bitwise NOT | Inverts all bits. | ~5 |
-6 |
<< |
Left Shift | Shifts bits left (multiplies by 2). | 5 << 1 |
10 |
>> |
Sign-Right Shift | Shifts bits right (divides by 2). | 10 >> 1 |
5 |
// Demonstrating Bitwise operations for permission bit-flags
// Defining permission bit-flags (Powers of 2)
const READ_PERMISSION = 1 << 0; // 0001 (1)
const WRITE_PERMISSION = 1 << 1; // 0010 (2)
const EXECUTE_PERMISSION = 1 << 2; // 0100 (4)
const DELETE_PERMISSION = 1 << 3; // 1000 (8)
// 1. Combining permissions using Bitwise OR (|)
let userPermissions = READ_PERMISSION | WRITE_PERMISSION; // 0011 (3)
console.log(`User Permission Bitmask: ${userPermissions}`);
// 2. Checking permission using Bitwise AND (&)
const canWrite = (userPermissions & WRITE_PERMISSION) !== 0;
const canDelete = (userPermissions & DELETE_PERMISSION) !== 0;
console.log(`Can Write? ${canWrite}`); // true
console.log(`Can Delete? ${canDelete}`); // false
// 3. Fast Truncation with Bitwise OR 0
const floatValue = 42.95;
const truncatedInt = floatValue | 0; // Truncates float to 32-bit int
console.log(`Truncated Float (floatValue | 0): ${truncatedInt}`); // 42
~arr.indexOf(item) in general application code; explicit methods like includes() are far more readable.Toggle a permission flag using Bitwise XOR (userPermissions ^= WRITE_PERMISSION). What does this accomplish?
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.