В JavaScript все числа являются вещественными и хранятся в 64-разрядном формате IEEE-754, но вместо того, чтобы интерпретировать операнды как 64-битные вещественные значения поразрядные операторы работают исключительно с целочисленными значениями операндов с помощью 32-разрядного целого представления, а не эквивалентного представления с плавающей точкой. Такие операторы производят операции, используя двоичное представление числа и, в случаях, когда значение операнда не является целым числом либо слишком велико, поразрядные операторы преобразуют числовое значение в последовательность из 32-х бит, убирая дробную часть операнда и все биты старше 32-го, после результат преобразуется обратно в 64-битный формат.

Поразрядные операторы &, |, ^ и ~ осуществляют операции булевой алгебры, они рассматривают каждый бит операндов подобно логическому значению (1 = true, 0 = false). Остальные операторы <<, >> и <<< применяются в целях сдвигов битов как влево, так и вправо. Оператору сдвига необходимо значение правого операнда в диапазоне целых чисел от нуля до 31. По преобразовании такого операнда в 32-разрядное целое подобным способом, оператор отбросит любой тип старше 5-го и получит число в соответствии с диапазоном.

Целые числа со знаком в двоичном представлении состоят из 32-бит и выступают в роли значений, а сам 32-бит (знаковый бит) указывает на знак числа, где 0 — это положительные числа, а 1 — отрицательные. Положительные числа хранятся в настоящем двоичном формате, в котором все биты, исключая знаковый, представляют степень двойки.

10011
2n4x12n3x02n2x02n1x12n0x1
160021