# Introduction to Bit Manipulation Bit manipulation involves the direct manipulation of bits within binary representations of data. It is a fundamental technique in computer science and programming, often used for optimizing performance, reducing memory usage, and performing low-level operations. Here are some common bit manipulation techniques and operations: ## Bitwise Operators: - Bitwise AND (`&`): Sets each bit to 1 if both bits are 1. - Bitwise OR (`|`): Sets each bit to 1 if one of the bits is 1. - Bitwise XOR (`^`): Sets each bit to 1 if only one of the bits is 1. - Bitwise NOT (`~`): Inverts all the bits. - Bitwise Left Shift (`<<`): Shifts bits to the left, adding zeros on the right. - Bitwise Right Shift (`>>`): Shifts bits to the right, discarding bits on the right. - Bitwise Unsigned Right Shift (`>>>`): Shifts bits to the right, filling with zeros on the left (used in some languages like JavaScript). ## Common Bit Manipulation Techniques: 1. Get Power of Two: Let say x = 101 if we do left shift by 1 then x becomes 1010 simply it gets multiply by 2. Similarly if we do left shift of x by k , then x becomes x*2^k ```cpp 1<<1 = 10 = 2 1<<2 = 100 = 2*2 1<<3 = 1000 = 2*2*2 ``` hence `1<<n = 2^n` ```js function getPowerOfTwo(n) { return 1 << n; } ```