--- title: Math.imul() slug: Web/JavaScript/Reference/Global_Objects/Math/imul translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul original_slug: Web/JavaScript/Referencia/Objectes_globals/Math/imul ---
La funció Math.imul() retorna el resultat de la multiplicació de 32 bits similar a la de C dels dos paràmetres.
Math.imul(a, b)
abMath.imul() permet una multiplicació ràpida de nombres sencers de 32 bits amb una semàtica similar a la de C. Aquesta característica esdevé útil per a projectes com Emscripten. Com que imul() és un mètode estàtic de Math, sempre s'utilitza com Math.imul() en comptes de com un mètode d'un objecte Math creat (Math no és un constructor).
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
Aquesta funció pot ser emulada mitjançant la següent funció:
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;
// el desplaçament de zero posicions solventa el signe a la part més significativa
// el |0 del final converteix el valor sense signe en un valor amb signe
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
};
| Especificació | Estat | Comentaris |
|---|---|---|
| {{SpecName('ES6', '#sec-math.imul', 'Math.imul')}} | {{Spec2('ES6')}} | Definició inicial. |
| Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Suport bàsic | {{CompatChrome("28")}} | {{CompatGeckoDesktop("20")}} | {{CompatUnknown}} | {{CompatOpera("16")}} | {{CompatSafari("7")}} |
| Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suport bàsic | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("20")}} | {{CompatUnknown}} | {{CompatUnknown}} | 7 |