Bitwise operations in JavaScript

JavaScript provides us with bitwise operators to perform bit manipulation operations on numbers.

Steps involved

While carrying out bitwise operations, the interpreter performs a sequence of steps.

Below we can see the steps listed in the order that is followed.

  1. Convert to binary: When a bitwise operation is performed, the operands are converted to their equivalent 32-bit signed binary integer.

  2. Operator result: After the conversion, the bitwise operation is performed, and a 32-bit result is produced.

  3. Convert back: The result value is then converted to its equivalent value and returned by the operator.

Types of bitwise operators

Below is a table that shows JavaScript's different types of bitwise operators.

Operator

Description

&

AND

|

OR

~

NOT

^

XOR

<<

Left shift

>>

Right shift

>>>

Unsigned right shift

Code example

Below is a JavaScript application showing how the different bitwise operators work.

In the application, we provide two numbers, num1 and num2. We perform all the operations listed in the table above on these numbers.

const num1 = 15
const num2 = 8
const num1b = num1.toString(2)
const num2b = num2.toString(2)
const and = num1 & num2
console.log("AND Operation: ")
console.log(num1 + " & " + num2 + " = " + num1b + " & " + num2b + " = " + and.toString(2) + " = " + and)
console.log("\n")
const or = num1 | num2
console.log("OR Operation: ")
console.log(num1 + " | " + num2 + " = " + num1b + " | " + num2b + " = " + or.toString(2) + " = " + or)
console.log("\n")
const xor = num1 ^ num2
console.log("XOR Operation: ")
console.log(num1 + " ^ " + num2 + " = " + num1b + " ^ " + num2b + " = " + xor.toString(2) + " = " + xor)
console.log("\n")
const not = ~num2
console.log("NOT Operation: ")
console.log("~" + num2 + " = " + "~" + num2b + " = " + not.toString(2) + " = " + not)
console.log("\n")
const leftShift = num2 << 1
console.log("Left Shift Operation: ")
console.log(num2 + " << " + 1 + " = " + num2b + " << " + 1 + " = " + leftShift.toString(2) + " = " + leftShift)
console.log("\n")
const rightShift = num2 >> 1
console.log("Right Shift Operation: ")
console.log(num2 + " >> " + 1 + " = " + num2b + " >> " + 1 + " = " + rightShift.toString(2) + " = " + rightShift)
console.log("\n")
const rightShiftUnsigned = num2 >>> 1
console.log("Unsigned Right Shift Operation: ")
console.log(num2 + " >>> " + 1 + " = " + num2b + " >>> " + 1 + " = " + rightShiftUnsigned.toString(2) + " = " + rightShiftUnsigned)
console.log("\n")

Code explanation

  • Lines 1–2: We initialize the two numbers num1 and num2 on which we are to perform bitwise operations.

  • Lines 4–5: The numbers are converted to binary strings using the toString() function by passing the argument 2.

  • Lines 7–10: Perform the AND (&) operation on num1 and num2, and display the result.

  • Lines 12–15: Perform the OR (|) operation on num1 and num2, and display the result.

  • Lines 17–20: Perform the XOR (^) operation on num1 and num2, and display the result.

  • Lines 22–25: Perform the NOT (~) operation on num2, and display the result.

  • Lines 27–30: Perform the left shift (<<) operation on num2 with a shift value of 1 and show the result.

  • Lines 32–35: Perform the right shift (>>) operation on num2 with a shift value of 1 and show the result.

  • Lines 37–40: Perform the unsigned right shift (>>>) operation on num2 with a shift value of 1 and show the result.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved