Math.log2()

The Math.log2() function returns the base 2 logarithm of a number, that is

x>0,Math.log2(x)=log2(x)=the uniqueysuch that2y=x\forall x > 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{the unique} \; y \; \text{such that} \; 2^y = x

Syntax

Math.log2(x)

Parameters

x
A number.

Return value

The base 2 logarithm of the given number. If the number is negative, NaN is returned.

Description

If the value of x is less than 0, the return value is always NaN.

Because log2() is a static method of Math, you always use it as Math.log2(), rather than as a method of a Math object you created (Math is not a constructor).

This function is the equivalent of Math.log(x) / Math.log(2).  For log2(e) use the constant Math.LOG2E which is 1 / Math.LN2.  

Examples

Using Math.log2()

Math.log2(3);    // 1.584962500721156
Math.log2(2);    // 1
Math.log2(1);    // 0
Math.log2(0);    // -Infinity
Math.log2(-2);   // NaN
Math.log2(1024); // 10

Polyfill

This Polyfill emulates the Math.log2 function. Note that it returns imprecise values on some inputs (like 1 << 29), wrap into Math.round() if working with bit masks.

Math.log2 = Math.log2 || function(x) {
  return Math.log(x) * Math.LOG2E;
};

Specifications

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math.log2' in that specification.
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Math.log2' in that specification.
Draft  

Browser compatibility

FeatureChromeFirefoxEdgeInternet ExplorerOperaSafari
Basic Support3825(Yes)(No)257.1

See also

Document Tags and Contributors

 Last updated by: fscholz,