diff --git a/Bit Manipulation/Bitwise AND.md b/Bit Manipulation/Bitwise AND.md
new file mode 100644
index 0000000..5d98fa8
--- /dev/null
+++ b/Bit Manipulation/Bitwise AND.md
@@ -0,0 +1,36 @@
+### Bitwise AND Operation
+The bitwise AND operation is a fundamental operation in computer programming that works on individual bits of binary numbers.
+
+In this operation, if both input bits are 1, the resulting bit will be 1. Otherwise, if either or both of the input bits are 0, the corresponding resulting bit will be 0. Consequently, the bitwise AND operation can be seen as a way to extract common 1-bits from two binary numbers while setting all other bits to 0.
+
+Truth table for **Bitwise AND** Operation:
+
+
+
+
+Example:
+If A=10100, B=10101, then
+
+
+
+
+## Code:
+```cpp
+#include
+using namespace std;
+int main(){
+ int a=5, b=4;
+ int c=a&b;
+ cout<
+
+
+
+
+Example:
+If A=10100, then
+
+
+
+
+## Code:
+```cpp
+#include
+using namespace std;
+int main(){
+ int a=5, b=~a;
+ cout<
+
+
+
+
+Example:
+If A=10100, B=10101, then
+
+
+
+
+## Code:
+```cpp
+#include
+using namespace std;
+int main(){
+ int a=5, b=4;
+ int c=a|b;
+ cout<>). These operations are often used in low-level programming to perform efficient multiplication and division by powers of 2, as well as other bit manipulation tasks.
+
+1. **Bitwise Left Shift (<<)**:
+ The bitwise left shift operation moves all the bits of a binary number to the left by a specified number of positions. The leftmost bits that are shifted out are discarded, and the rightmost bits are filled with zeros.
+
+ For example, if we perform a left shift of 2 positions on the binary number 00101110, the result will be:
+ ```cpp
+ Original binary number: 00101110
+ Left shift by 2: 10111000
+ ```
+
+2. **Bitwise Right Shift (>>)**:
+ The bitwise right shift operation moves all the bits of a binary number to the right by a specified number of positions. The rightmost bits that are shifted out are discarded, and the leftmost bits are filled based on the sign bit (for signed integers) or with zeros (for unsigned integers).
+
+ For example, if we perform a right shift of 3 positions on the binary number 11011010, the result will be:
+ ```cpp
+ Original binary number: 11011010
+ Right shift by 3: 00011011
+ ```
+
+## Code:
+```cpp
+#include
+using namespace std;
+int main(){
+ int a=5;
+ a=a>>1;
+ int b=7;
+ b=b<<1;
+ cout<>1= 2
+14 // 7<<1= 14
+
+```
+## Complexity:
+```
+Time Complexity: O(1)
+Auxiliary Space: O(1)
+```
diff --git a/Bit Manipulation/Check kth bit set.md b/Bit Manipulation/Check kth bit set.md
new file mode 100644
index 0000000..c89620d
--- /dev/null
+++ b/Bit Manipulation/Check kth bit set.md
@@ -0,0 +1,31 @@
+### Check kth bit set or not
+In order to check whether the kth bit is set or not, we use below 2 methods:
+1. **Right Shift Operation** : To check the kth bit, you can left-shift the number by (k-1) positions and then perform a bitwise AND operation with 1.
+If the result is non-zero, it means the kth bit is set (1); otherwise, the kth bit is not set (0).
+```cpp
+#include
+using namespace std;
+int main() {
+ int n = 5, k = 3;
+ while(k--){
+ n=n>>1;
+ }
+ if ((n & 1) != 0) {
+ cout << "YES" << endl;
+ } else {
+ cout << "NO" << endl;
+ }
+}
+```
+
+2. **Bitwise Mask** : Alternatively, you can create a bitmask with only the kth bit set (1), and then perform a bitwise AND operation with the number. If the result is non-zero, the kth bit is set (1); otherwise, it is not set (0).
+
+```cpp
+#include
+using namespace std;
+int main() {
+ int n = 5, k = 3;
+ int m = 1 << (k - 1);
+ return (n & m) != 0;
+}
+```