Bitwise Operators
Bitwise operators in JavaScript perform operations on binary representations of integers. They manipulate bits directly using AND, OR, XOR, NOT, shifts, etc.
JavaScript uses the following bitwise operators:
Operator | Name | Description |
---|---|---|
& |
AND | If both bits are 1, result is 1; otherwise 0. |
| |
OR | If either bit is 1, result is 1; otherwise 0. |
^ |
XOR | If bits are different, result is 1; otherwise 0. |
~ |
NOT | If bit is 0, result is 1; otherwise 0. |
<< |
Zero fill left shift | Pushes zeros in from right, leftmost bits fall off. |
>> |
Signed right shift | Pushes copies of leftmost bit in from left, rightmost bit falls off (preserves sign). |
>>> |
Zero fill right shift | Pushes zeros in from left, rightmost bits fall off. |
AND
The AND (&
) operator performs a bitwise AND on two numbers. The result is 1 only when both bits are 1:
console.log(19 & 7); // Output: 3// 10011 = 19// 00111 = 7// 00011 = 3
OR
The OR (|
) operator performs a bitwise OR on two numbers. The result is 1 if either of the bits is 1:
console.log(19 | 7); // Output: 23// 10011 = 19// 00111 = 7// 10111 = 23
XOR
The XOR (^
) operator performs a bitwise XOR on two numbers. The result is 1 if the bits are different:
console.log(19 ^ 7); // Output: 20// 10011 = 19// 00111 = 7// 10100 = 20
NOT
Because integers are stored in two’s complement (to change the sign, the binary digits are first inverted and then 1
is added), a NOT (~
) operation will change the sign of the number and change the absolute value by one:
console.log(~19); // Output: -20// 00000000000000000000000000010011 = 19// 11111111111111111111111111101100 = -20
Zero Fill Left Shift
The zero fill left shift (<<
) operator shifts the bits of a number to the left, pushing zeros in from the right. The leftmost bits fall off and are discarded:
console.log(19 << 3); // Output: 152// 00000000000000000000000000010011 = 19// 00000000000000000000000010011000 = 152console.log(5 << 2); // Output: 20// 00000000000000000000000000000101 = 5// 00000000000000000000000000010100 = 20
Signed Right Shift
The signed right shift (>>
) operator shifts the bits of a number to the right, pushing zeros in from the left. The rightmost bits fall off and are discarded:
console.log(19 >> 3); // Output: 2// 00000000000000000000000000010011 = 19// 00000000000000000000000000000010 = 2console.log(-20 >> 3); // Output: -3// 11111111111111111111111111101100 = -20// 11111111111111111111111111111101 = -3
Zero Fill Right Shift
The zero fill right shift (>>>
) operator does not preserve the sign. It pushes zeros in from the left, pushing the sign bit out of its leftmost position:
console.log(19 >>> 3); // Output: 2// 00000000000000000000000000010011 = 19// 00000000000000000000000000000010 = 2console.log(-20 >>> 3); // Output: 536870909// 11111111111111111111111111101100 = -20// 00011111111111111111111111111101 = 536870909
Codebyte Examples
Execute the following to illustrate the use of Bitwise &
operator:
Execute the following to illustrate the use of Bitwise |
operator:
Execute the following to illustrate the use of Bitwise ^
operator:
Execute the following to illustrate the use of Bitwise ~
operator:
Execute the following to illustrate the use of Bitwise <<
operator:
Execute the following to illustrate the use of Bitwise >>
operator:
Execute the following to illustrate the use of Bitwise >>>
operator:
Contribute to Docs
- Learn more about how to get involved.
- Edit this page on GitHub to fix an error or make an improvement.
- Submit feedback to let us know how we can improve Docs.
Learn JavaScript on Codecademy
- Career path
Front-End Engineer
Front-end engineers work closely with designers to make websites beautiful, functional, and fast.Includes 34 CoursesWith Professional CertificationBeginner Friendly115 hours - Free course
Learn JavaScript
Learn how to use JavaScript — a powerful and flexible programming language for adding website interactivity.Beginner Friendly15 hours