Math.imul
Math.imul
Math.imul()
返回两个参数的类C的32位整数乘法运算的运算结果.
语法
Math.imul(a, b)
参数
a
被乘数.b
乘数.
返回值
给定参数的C型32位乘法的结果。
描述
Math.imul
可以进行快速的,类C语义的32位整数乘法.该特性对于一些项目比如Emscripten很有用.
示例
使用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
Polyfill
下面的JavaScript代码可以实现该函数:
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;
// the shift by 0 fixes the sign on the high part
// the final |0 converts the unsigned value into a signed value
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0
};
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Math.imul' in that specification. | Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262)The definition of 'Math.imul' in that specification. | Living Standard | |
浏览器兼容性
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | 28 | (Yes) | 20 | No | 16 | 7 |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | 20 | No | (Yes) | 7 |