mozilla
Your Search Results

    Math.imul()

    これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
    この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。

    概要

    このメソッドは 2 つの引数をとり、C 言語の様な 32 ビット乗算の結果を返します。

    構文

    Math.imul(a, b)

    引数

    a
    最初の数字
    b
    2 番目の数字

    説明

    Math.imul は、 C 言語の様なセマンティクスを持つ、高速な 32 ビット整数乗算を可能にします。この機能は Emscripten のようなプロジェクトに有用です。

    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

    次の関数を用いる事により、imul をサポートしていない環境でもこれをエミュレートする事が出来ます。

    // Math.imul の代替関数
    function imul(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);
    }
    

    ブラウザ実装状況

    機能 Firefox (Gecko) Chrome Internet Explorer Opera Safari
    基本サポート 20 (20) 28 ? ? WebKit bug 115143
    機能 Firefox Mobile (Gecko) Android Chrome for Android IE Mobile Opera Mobile Safari Mobile
    基本サポート 20.0 (20) ? ? ? ? WebKit bug 115143

    ドキュメントのタグと貢献者

    タグ: 
    Contributors to this page: ethertank, teoli
    最終更新者: teoli,