Open In App

What is Bitmasking in JavaScript?

Last Updated : 20 Jun, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Bitmasking in JavaScript refers to the manipulation and usage of bitwise operators to work with the binary representations of numbers and It is a technique commonly used to optimize certain operations and save memory in various algorithms Bitwise operators in JavaScript operate on individual bits of binary representations of the numbers rather than their decimal representations.

The numbers are represented in binary form, which consists of 0s and 1s. Bitmasking allows you to manipulate specific bits of these binary representations using bitwise operators like AND, OR, XOR, NOT, left shift, and right shift.

Representing a set of binary flags

This approach is commonly used to represent sets of flags where each flag can be either on or off.

Example: This example shows the use of the above-explained approach.

JavaScript
const flagA = 4;
const flagB = 3;
const flagC = 2;

const geek = flagA | flagB;
const isFlagAPresent = (geek & flagA) !== 0;
const isFlagCPresent = (geek & flagC) !== 0;
console.log(`Combined Flags: ${geek.toString(3)}`);
console.log(`${isFlagAPresent}`);
console.log(`${isFlagCPresent}`);

Output
Combined Flags: 21
true
true

Optimizing memory

You can use bit masking to store multiple boolean values in a single integer and save memory when dealing with large collections.

Example: This example shows the use of the above-explained approach.

JavaScript
const item = [true, false, true, true, false, true, false];
let bitmask = 0;
for (let i = 0; i < item.length; i++) {
    if (item[i]) {
        bitmask |= 1 << i;
    }
}
const geek = (bitmask & (1 << 2)) !== 0;
console.log("Bitmask:", bitmask);
console.log(geek);

Output
Bitmask: 45
true

Checking the presence or absence of elements

You can use bit masking to check the presence or absence of specific elements in a collection.

Example: This example shows the use of the above-explained approach.

JavaScript
const geek = [2, 8, 13, 9, 7, 13];

let bitmask = 0;
for (let i = 0; i < geek.length; i++) {
    bitmask |= 1 << geek[i];
}
const numberToCheck = 6;
const isNumberPresent =
    (bitmask & (1 << numberToCheck)) !== 0;
console.log(isNumberPresent);

Output
false

Next Article

Similar Reads