--- title: Math.imul() slug: Web/JavaScript/Reference/Global_Objects/Math/imul tags: - Experimental - Expérimental(2) - JavaScript - Math - Method - Reference - Référence(2) translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul ---
{{JSRef("Global_Objects", "Math")}}

Сводка

Метод Math.imul() возвращает результат перемножения в стиле C двух 32-битных чисел.

Синтаксис

Math.imul(a, b)

Параметры

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);
};

Спецификации

Спецификация Статус Комментарии
{{SpecName('ES6', '#sec-math.imul', 'Math.imul')}} {{Spec2('ES6')}} Изначальное определение.

Совместимость с браузерами

{{CompatibilityTable}}
Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка {{CompatChrome("28")}} {{CompatGeckoDesktop("20")}} {{CompatUnknown}} {{CompatOpera("16")}} {{CompatSafari("7")}}
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoMobile("20")}} {{CompatUnknown}} {{CompatUnknown}} iOS 7