์์์ ๋๋์ ๊ณ์ฐ๊ธฐ๋?
์ด ๋๊ตฌ๋ ํผ์ ์๋ฅผ ์ ์๋ก ๋๋์ด ์ํ๋ ์์์ ์๋ฆฟ์๊น์ง ๋ชซ์ ๊ตฌํด ์ค๋๋ค. ๋ ์ซ์๋ ์์, ์์, ์ ์, ์์ ๋ฌด์์ด๋ ์ ๋ ฅํ ์ ์์ต๋๋ค. ํ ๊ฐ์ง ์ค์ํ ์ ์, ๊ฒฐ๊ณผ๋ฅผ ์ง์ ํ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ์ง ์๊ณ ๊ทธ๋๋ก ์๋ผ๋ธ๋ค(์ ์ฌ)๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๊ธด ๋๋์ (ํ์ฐ)์ ํ์ ๋ ํด๋น ์๋ฆฌ๊น์ง ๋์ค๋ ์ซ์๋ฅผ ์๋ ๊ทธ๋๋ก ํ์ธํ ์ ์์ต๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์ ์(Divisor), ์ฆ ๋๋๋ ์๋ฅผ ์ ๋ ฅํ๊ณ , ํผ์ ์(Dividend), ์ฆ ๋๋์ด์ง๋ ์๋ฅผ ์ ๋ ฅํ์ธ์. ๊ทธ๋ฐ ๋ค์ ๋ช ๋ฒ์งธ ์์์ ๊น์ง ๊ณ์ฐํ ์ง ์ ํํฉ๋๋ค(์: 3์๋ฆฌ). ๊ณ์ฐ๊ธฐ๋ ์์์ ์๋ ์ ํํ ๊ทธ๋งํผ์ ์๋ฆฟ์๋ฅผ ๊ฐ์ง ๊ณ ์ ์์ ํํ๋ก ๋ชซ์ ๋ฐํํ๋ฉฐ, ๋์๋ฆฌ์ 0๋ ๊ทธ๋๋ก ์ ์งํฉ๋๋ค.
๊ณ์ฐ ๊ณต์
์ ํํ ์์์ ์๋ฆฟ์๋ฅผ \(p\)๋ผ๊ณ ํฉ์๋ค. ์ค์ ์ ํํ ๋ชซ์ \(q = \text{ํผ์ ์} / \text{์ ์}\)์ ๋๋ค. ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค.
$$\text{Quotient} = \frac{\text{Dividend}}{\text{Divisor}} \quad \text{(truncated to } \text{N} \text{ decimal places)}$$sign = (ํผ์ ์ < 0) XOR (์ ์ < 0) ? -1 : +1; m = |ํผ์ ์| / |์ ์|; t = floor(m ร 10^p) / 10^p; ๋ชซ = sign ร t. ์์๊ฐ ์๋ ์ ๋๊ฐ์ floor(๋ด๋ฆผ)๋ฅผ ์ ์ฉํ๋ ๊ฒ์ 0 ๋ฐฉํฅ์ผ๋ก ์๋ผ๋ด๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด ๊ณ์ฐ๊ธฐ๋ \(p\)์๋ฆฌ์์ ๋ฉ์ถ๋ฉฐ ๋ฐ์ฌ๋ฆผ์ ํ์ง ์์ต๋๋ค.
์์ ํ์ด
31์ 16์ผ๋ก ๋๋์ด ์์์ 3์๋ฆฌ๊น์ง ๊ณ์ฐํด ๋ด ์๋ค. \(31 / 16 = 1.9375\)๋ก ๋ฑ ๋จ์ด์ง๋๋ค. \(\lfloor 1.9375 \times 1000 \rfloor = 1937\)์ด๋ฏ๋ก \(1937 / 1000 =\) 1.937์ด ๋ฉ๋๋ค. ๋ง์ฝ 6์๋ฆฌ๊น์ง ์ง์ ํ๋ค๋ฉด 1.937500์ผ๋ก ํ์๋ฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ 22/15๊ฐ 1.467์ด ์๋๋ผ 1.466์ผ๋ก ๋์ค๋์? ์ด ๋๊ตฌ๋ ๋ฐ์ฌ๋ฆผ์ด ์๋๋ผ ์๋ผ๋ด๊ธฐ(์ ์ฌ)๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. \(22/15 = 1.46666...\)์ธ๋ฐ, 3์๋ฆฌ์์ ์๋ผ๋ด๋ฉด 1.466์ด ๋จ์ต๋๋ค. ๋ฐ์ฌ๋ฆผ๋ ๊ฐ์ด ํ์ํ๋ค๋ฉด ๋ ๋ง์ ์๋ฆฌ๊น์ง ๋จผ์ ๊ณ์ฐํด ๋ณด์ธ์.
์ ์๊ฐ 0์ด๋ฉด ์ด๋ป๊ฒ ๋๋์? 0์ผ๋ก ๋๋๋ ๊ฒ์ ์ ์๋์ง ์์ผ๋ฏ๋ก, ๊ณ์ฐ๊ธฐ๋ ์ซ์ ๋์ ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค.
์์์ ์์ ์ ๋ ฅ๋ ์ฒ๋ฆฌํ๋์? ๋ค. ๋ถํธ๋ XOR ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ, \(0.75 / 1.5\)์ฒ๋ผ ํผ์ ์๋ ์ ์๊ฐ ์์์ธ ๊ฒฝ์ฐ๋ ๊ทธ๋๋ก ๊ณ์ฐ๋ฉ๋๋ค.