Math.imul()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Сводка
Метод Math.imul()
возвращает результат перемножения в стиле C двух 32-битных чисел.
Синтаксис
Math.imul(a, b)
Параметры
Описание
Метод Math.imul()
позволяет выполнять быстрое перемножение двух 32-битных чисел с семантикой C. Эта возможность полезна для таких проектов, как Emscripten. Поскольку метод imul()
является статическим методом объекта Math
, вы всегда должны использовать его как Math.imul()
, а не пытаться вызывать метод на созданном экземпляре объекта Math
(поскольку объект Math
не является конструктором).
Примеры
Пример: использование метода Math.imul()
Math.imul(2, 4); // 8
Math.imul(-1, 8); // -8
Math.imul(-2, -2); // 4
Math.imul(0xffffffff, 5); // -5
Math.imul(0xfffffffe, 5); // -10
Полифил
Этот метод может эмулироваться следующим способом:
Math.imul =
Math.imul ||
function (a, b) {
var ah = (a >>> 16) & 0xffff;
var al = a & 0xffff;
var bh = (b >>> 16) & 0xffff;
var bl = b & 0xffff;
// сдвиг на 0 бит закрепляет знак в старшей части числа
// окончательный |0 преобразует беззнаковое значение обратно в знаковое значение
return (al * bl + (((ah * bl + al * bh) << 16) >>> 0)) | 0;
};
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-math.imul |
Совместимость с браузерами
BCD tables only load in the browser