Like other languages, JavaScript also supports bit-wise operations. In JavaScript, a number is stored as a 64-bit floating-point number but the bit-wise operation is performed on a 32-bit binary number i.e. to perform a bit-operation JavaScript converts the number into a 32-bit binary number (signed) and perform the operation and convert back the result to a 64-bit number.
BITWISE AND (&): When a bitwise AND is performed on a pair of bits, it returns 1 if both bits are 1.
Example:
var x = 5; // 101
var y = 1; // 1
var z = x&y;
So here, 1 will be stored in z
BITWISE OR (|): When a bitwise OR is performed on a pair of bits, it returns 1 if atleast one of the bits is 1.
Example:
var x = 5; // 101
var y = 1; // 1
var z = x|y;
So here, 5 will be stored in z
BITWISE XOR (^): When a bitwise XOR is performed on a pair of bits, it returns 1 if the bits are different.
Example:
var x = 5; // 101
var y = 1; // 1
var z = x^y;
So here, 4 will be stored in z
BITWISE NOT(~): Its is a unary operator i.e. accepts single operands. It flips the bits i.e 0 becomes 1 and 1 becomes 0.
NOTE: JavaScript binary numbers are stored in two’s complement format. This means that a negative number is the bitwise NOT of the number plus 1.
Example:
var x = 5; // 101
var z = ~x;
So here, -6 will be stored in z
(Zero Fill) Bitwise Left Shift (<<): One or more zero bits are pushed in from the right, and the leftmost bits fall off.
Example:
var x = 5; // 00000000000000000000000000000101
var z = x<<1; // 00000000000000000000000000001010
So here, 10 will be stored in z
(Sign Preserving) Bitwise Right Shift (>>): Copies of the leftmost bit are pushed in from the left, and the rightmost bits fall off.
Example:
var x = -5; // 11111111111111111111111111111011
var z = x>>1; // 11111111111111111111111111111101
So here, -3 will be stored in z
(Zero Fill) Right Shift (>>): One or more zero bits are pushed in from the left, and the rightmost bits fall off.
Example:
var x = 5; // 00000000000000000000000000000101
var z = x>>1; // 00000000000000000000000000000010
So here, 2 will be stored in z
Try the following example in the editor below.
You are given an integer N, print the summation of N XOR (N OR (Negation N)).
Sample Input:
100
Sample Output:
-101