class BitManipulation {
static and(a: number, b: number): number {
return a & b; // bitwise AND keeps bits ON only if both bits are ON
}
static or(a: number, b: number): number {
return a | b; // bitwise OR turns bits ON if either bit is ON
}
static xor(a: number, b: number): number {
return a ^ b; // bitwise XOR turns bits ON only if bits differ
}
static not(a: number): number {
return ~a; // bitwise NOT flips all bits
}
static leftShift(a: number, n: number): number {
return a << n; // shift bits left by n, adding zeros on right
}
static rightShift(a: number, n: number): number {
return a >> n; // shift bits right by n, dropping bits on right
}
}
// Driver code
const number1 = 13; // 00001101
const number2 = 10; // 00001010
console.log("AND result:", BitManipulation.and(number1, number2));
console.log("OR result:", BitManipulation.or(number1, number2));
console.log("XOR result:", BitManipulation.xor(number1, number2));
console.log("NOT result:", BitManipulation.not(number1));
console.log("Left shift result:", BitManipulation.leftShift(number1, 2));
console.log("Right shift result:", BitManipulation.rightShift(number1, 2));return a & b; // bitwise AND keeps bits ON only if both bits are ON
perform AND operation to keep bits ON only if both inputs have ON bits
return a | b; // bitwise OR turns bits ON if either bit is ON
perform OR operation to turn bits ON if either input has ON bit
return a ^ b; // bitwise XOR turns bits ON only if bits differ
perform XOR operation to turn bits ON only if bits differ
return ~a; // bitwise NOT flips all bits
flip every bit from ON to OFF or OFF to ON
return a << n; // shift bits left by n, adding zeros on right
move bits left by n positions, adding zeros on right
return a >> n; // shift bits right by n, dropping bits on right
move bits right by n positions, dropping bits on right
AND result: 8
OR result: 15
XOR result: 7
NOT result: -14
Left shift result: 52
Right shift result: 3