Log2: примеры (JAVASCRIPT)

Использование функции log2 для вычислений в JavaScript
Раздел: Математика, Логарифмы
log2(number): number

Функция Math.log2() является статическим методом объекта Math в JavaScript и возвращает двоичный логарифм числа, то есть логарифм по основанию 2. Эта функция часто применяется в алгоритмах, компьютерных науках и задачах, связанных с обработкой данных, где требуется вычисление степени двойки или определение количества битов, необходимых для представления числа.

Основные сведения о функции

Синтаксис:

Math.log2(x)

Единственный аргумент x является числом, для которого вычисляется двоичный логарифм. Если x имеет отрицательное значение или равно нулю, функция возвращает NaN. Если x равен положительной бесконечности, возвращается Infinity. При x равном 1, результат будет 0, так как 2 в степени 0 равно 1.

Возвращаемое значение – число, представляющее логарифм по основанию 2 от аргумента x, или специальные значения NaN и Infinity в описанных случаях.

Простые примеры использования

Пример с положительным числом:

console.log(Math.log2(8));
3

Пример с дробным числом:

console.log(Math.log2(2.5));
1.3219280948873624

Пример с единицей:

console.log(Math.log2(1));
0

Пример с нулем:

console.log(Math.log2(0));
-Infinity

Пример с отрицательным числом:

console.log(Math.log2(-10));
NaN

Пример с Infinity:

console.log(Math.log2(Infinity));
Infinity

Аналогичные функции в JavaScript

В JavaScript присутствуют другие логарифмические функции объекта Math.

Math.log(x) вычисляет натуральный логарифм (по основанию e). Используется в математических расчетах, связанных с экспоненциальным ростом.

Math.log10(x) возвращает десятичный логарифм. Применяется в инженерии, научных расчетах, когда требуется логарифмическая шкала по основанию 10.

Math.LN2 и Math.LN10 – константы, представляющие натуральные логарифмы чисел 2 и 10 соответственно.

Выбор функции зависит от требуемого основания логарифма. Math.log2() наиболее эффективна для задач, связанных с двоичными системами.

Реализации в других языках программирования

В Python функция math.log2(x) из модуля math работает аналогично. Пример:

import math
print(math.log2(8))
3.0

В PHP функция log($arg, $base) с основанием 2 вычисляет двоичный логарифм. Пример:

echo log(8, 2);
3

В C стандартная библиотека math.h предоставляет функцию log2(double x). Пример:

#include <stdio.h>
#include <math.h>
int main() {
    printf("%f\n", log2(8.0));
    return 0;
}
3.000000

В MySQL функцию LOG2(x) можно использовать в запросах. Пример:

SELECT LOG2(8);
3.0000000000000000

Основные отличия заключаются в именовании функций и иногда в точности возвращаемого значения, но семантика остается одинаковой.

Распространенные ошибки

Передача нечисловых аргументов может привести к неявному преобразованию или NaN:

console.log(Math.log2("16")); // Строка преобразуется в число
console.log(Math.log2("текст"));
4
NaN

Ожидание целого числа от результата для нестепеней двойки:

let result = Math.log2(10);
if (result === 3) { // Условие не выполнится
    console.log("Точная степень двойки");
} else {
    console.log("Результат дробный: " + result);
}
Результат дробный: 3.3219280948873626

Использование функции без проверки на отрицательные значения или ноль, если последующая логика требует чисел:

function calculateBits(num) {
    return Math.log2(num);
}
console.log(calculateBits(0));
-Infinity

Изменения в спецификации

Функция Math.log2() была добавлена в стандарт ECMAScript 2015 (ES6). В более ранних версиях JavaScript эта функция отсутствовала, и для ее получения использовали математическое преобразование: Math.log(x) / Math.LN2. Все современные браузеры поддерживают Math.log2().

С момента введения существенных изменений в работе функции не происходило.

Расширенные примеры применения

Определение количества бит, необходимых для представления целого положительного числа:

Пример javascript
function bitsRequired(number) {
    return Math.ceil(Math.log2(number + 1));
}
console.log(bitsRequired(255));
console.log(bitsRequired(256));
8
9

Проверка, является ли число степенью двойки:

Пример javascript
function isPowerOfTwo(num) {
    return Number.isInteger(Math.log2(num));
}
console.log(isPowerOfTwo(1024));
console.log(isPowerOfTwo(1000));
true
false

Создание логарифмической шкалы по основанию 2 для визуализации данных:

Пример javascript
let data = [1, 2, 4, 8, 16, 32];
let logScale = data.map(value => Math.log2(value));
console.log(logScale);
[0, 1, 2, 3, 4, 5]

Использование в алгоритме бинарного поиска для оценки максимального количества шагов:

Пример javascript
let sortedArraySize = 1000;
let maxSteps = Math.ceil(Math.log2(sortedArraySize));
console.log(maxSteps);
10

Вычисление глубины полного двоичного дерева по количеству листьев:

Пример javascript
function treeDepth(leaves) {
    return Math.floor(Math.log2(leaves));
}
console.log(treeDepth(16));
4

JS log2 function comments

En
Log2 Returns the base 2 logarithm of a number