blob: b417f090b0fe7a02a763e532dc337abeb20cb5d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
---
title: Math.imul()
slug: Web/JavaScript/Reference/Global_Objects/Math/imul
tags:
- JavaScript
- Math
- Method
- Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul
browser-compat: javascript.builtins.Math.imul
---
<div>{{JSRef}}</div>
<p><strong><code>Math.imul()</code></strong> 함수는 C 언어와 같은 양식으로 2개 파라메터의 32-bit 곱셈 결과를 리턴합니다.</p>
<h2 id="문법">문법</h2>
<pre class="syntaxbox"><code>Math.imul(<var>a</var>, <var>b</var>)</code></pre>
<h3 id="파라메터">파라메터</h3>
<dl>
<dt><code>a</code></dt>
<dd>첫 번째 숫자.</dd>
<dt><code>b</code></dt>
<dd>두 번째 숫자.</dd>
</dl>
<h2 id="설명">설명</h2>
<p><code>Math.imul()</code> 를 쓰면 C 언어와 같은 양식의 빠른 32-bit 정수 곱셈이 가능합니다. 이 기능은 <a href="http://en.wikipedia.org/wiki/Emscripten">Emscripten</a> 같은 프로젝트에 유용합니다. <code>imul()</code> 이 <code>Math </code> 객체의 정적 메소드이기 때문에, <code>Math 객체를 직접 만들어서 사용하지 않고 (Math 는 생성자가 아닙니다), Math.imul()</code> 같은 형태로 사용합니다.</p>
<h2 id="예제">예제</h2>
<h3 id="Math.imul()_사용법"><code>Math.imul() 사용법</code></h3>
<pre class="brush: js">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
</pre>
<h2 id="Polyfill">Polyfill</h2>
<p>다음과 같은 함수로 Math.imul() 을 흉내낼 수 있습니다.</p>
<pre class="brush: js">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);
};
</pre>
<h2 id="specifications">명세</h2>
<p>{{Specifications}}</p>
<h2 id="browser_compatibility">브라우저 호환성</h2>
<p>{{Compat}}</p>
|