๋นํธ ์ํํธ๋?
๋นํธ ์ํํธ๋ ์ ์์ 2์ง์ ์๋ฆฟ๊ฐ์ ์ํ๋ ์นธ์๋งํผ ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํค๋ ์ฐ์ฐ์
๋๋ค. ์ํํธ ์ฐ์ฐ์ ํ๋ก๊ทธ๋๋ฐ, ์ ์์ค ์ต์ ํ, ๊ทธ๋ํฝ, ํด์ฑ, ์๋ฒ ๋๋ ์์คํ
๋ฑ์์ ์์ฃผ ์ฐ์ด๋ ๊ธฐ๋ณธ ์ฐ์ฐ์
๋๋ค. ์ผ์ชฝ ์ํํธ(n << k)๋ ๋นํธ๋ฅผ ์ต์์(MSB) ๋ฐฉํฅ์ผ๋ก ๋ฐ์ด๋ด๊ณ ๋น์๋ฆฌ๋ฅผ 0์ผ๋ก ์ฑ์ฐ๋ฉฐ, ์ค๋ฅธ์ชฝ ์ํํธ(n >> k)๋ ๋นํธ๋ฅผ ์ตํ์(LSB) ๋ฐฉํฅ์ผ๋ก ์ด๋์ํต๋๋ค.
๊ณ์ฐ๊ธฐ ์ฌ์ฉ๋ฒ
์ ์ n๊ณผ ์ํํธํ ๋นํธ ์ k๋ฅผ ์ ๋ ฅํ ๋ค ์ด๋ ๋ฐฉํฅ์ ์ ํํ์ธ์. ๊ณ์ฐ๊ธฐ๊ฐ ๊ฒฐ๊ณผ๋ฅผ 10์ง์ ๊ฐ์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ์ด ๋๊ตฌ๋ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋์ผํ๊ฒ 64๋นํธ ๋ถํธ ์๋ ์ ์(signed integer) ์ฐ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
๊ณต์ ์ดํดํ๊ธฐ
ํ ์นธ ์ผ์ชฝ์ผ๋ก ์ํํธํ ๋๋ง๋ค ๊ฐ์ 2๋ฐฐ๊ฐ ๋๋ฏ๋ก, k์นธ ์ผ์ชฝ ์ํํธ๋ \(2^{k}\)๋ฅผ ๊ณฑํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค:
$$\text{Result} = \text{Number (n)} \ll \text{Shift (k)} = n \times 2^{k}$$๋ฐ๋๋ก ํ ์นธ ์ค๋ฅธ์ชฝ์ผ๋ก ์ํํธํ ๋๋ง๋ค ๊ฐ์ ์ ๋ฐ์ด ๋๋ฉฐ ์์์ ์ดํ๋ ๋ฒ๋ ค์ง๋ฏ๋ก, k์นธ ์ค๋ฅธ์ชฝ ์ํํธ๋ \(2^{k}\)๋ก ์ ์ ๋๋์ ์ ํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค:
$$\text{Result} = \text{Number (n)} \gg \text{Shift (k)} = \left\lfloor \frac{n}{2^{k}} \right\rfloor$$๊ทธ๋์ ํ๋์จ์ด์์ ์ํํธ ์ฐ์ฐ์ด ๊ณฑ์ ์ด๋ ๋๋์ ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ๊ฒ์ ๋๋ค.
์์ ๋ก ๋ณด๊ธฐ
n = 16์ k = 2๋งํผ ์ผ์ชฝ์ผ๋ก ์ํํธํด ๋ณด๊ฒ ์ต๋๋ค. 16์ 2์ง์๋ก ์ฐ๋ฉด 10000์
๋๋ค. ์ผ์ชฝ์ผ๋ก ๋ ์นธ ๋ฐ๋ฉด ๋์ 0์ด ๋ ๊ฐ ๋ถ์ด 1000000, ์ฆ 64๊ฐ ๋ฉ๋๋ค. ์์์ผ๋ก ๋ณด๋ฉด $$16 \times 2^{2} = 16 \times 4 = 64$$ ์ด์ฃ . ๋ฐ๋๋ก \(64 \gg 2 = \left\lfloor 64 / 4 \right\rfloor = 16\)์ด ๋์ด ์๋ ๊ฐ์ผ๋ก ๋์์ต๋๋ค.
2์ ๊ฑฐ๋ญ์ ๊ณฑ ์ฐธ๊ณ ํ
์ข์ธก ์ํํธ \(k\)๋ ์ซ์์ \(2^k\)๋ฅผ ๊ณฑํฉ๋๋ค. ์ฐ์ธก ์ํํธ \(k\)๋ \(2^k\)๋ก ๋๋๋๋ค (์ ์์ ๊ฒฝ์ฐ ๋๋จธ์ง๋ ๋ฒ๋ฆฝ๋๋ค). ์ฃผ์ด์ง ์ํํธ ์์ ๊ณฑ์ ๋๋ ์ ์๋ฅผ ์ฆ์ ์ฝ๊ธฐ ์ํด ์ด ํ๋ฅผ ์ฌ์ฉํ์ธ์.
| ์ํํธ \(k\) | \(2^k\) (์ญ์ง๋ฒ) | \(\ll k\) / \(\gg k\)์ ์๋ฏธ |
|---|---|---|
| 0 | 1 | ๋ณํ ์์ |
| 1 | 2 | \(\times 2\) / \(\div 2\) |
| 2 | 4 | \(\times 4\) / \(\div 4\) |
| 3 | 8 | \(\times 8\) / \(\div 8\) |
| 4 | 16 | \(\times 16\) |
| 5 | 32 | \(\times 32\) |
| 6 | 64 | \(\times 64\) |
| 7 | 128 | \(\times 128\) |
| 8 | 256 | \(\times 256\) (1 ๋ฐ์ดํธ) |
| 9 | 512 | \(\times 512\) |
| 10 | 1,024 | \(\times 1024\) (1 KiB) |
| 11 | 2,048 | \(\times 2048\) |
| 12 | 4,096 | \(\times 4096\) |
| 13 | 8,192 | \(\times 8192\) |
| 14 | 16,384 | \(\times 16384\) |
| 15 | 32,768 | \(\times 32768\) |
| 16 | 65,536 | \(\times 65536\) (2 ๋ฐ์ดํธ) |
| 17 | 131,072 | |
| 18 | 262,144 | |
| 19 | 524,288 | |
| 20 | 1,048,576 | \(\times\) 1 MiB |
| 32 | 4,294,967,296 | 32๋นํธ ๊ฒฝ๊ณ |
| 63 | 9,223,372,036,854,775,808 | 64๋นํธ ๋ถํธ ์๋ ์ ์์ ์ต์์ ๋นํธ |
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ผ์ชฝ ์ํํธ๋ฅผ ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง ์ ์๋์? ๋ค. ์ ์์ ๋นํธ ํญ์ ๋์ด๊ฐ ๋นํธ๋ ๋ฒ๋ ค์ง๋๋ค(์ค๋ฒํ๋ก). ๋ค๋ง 64๋นํธ ๋ฒ์ ์์์๋ ์ด ๊ณ์ฐ๊ธฐ๊ฐ ๊ฐ์ ๊ทธ๋๋ก ๋ณด์กดํฉ๋๋ค.
์์๋ฅผ ์ค๋ฅธ์ชฝ ์ํํธํ๋ฉด ์ด๋ป๊ฒ ๋๋์? ์ด ๊ณ์ฐ๊ธฐ๋ ์ฐ์ (๋ถํธ ์๋) ์ค๋ฅธ์ชฝ ์ํํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ถํธ ๋นํธ๊ฐ ์ ์ง๋์ด ์์๋ ๊ทธ๋๋ก ์์๋ก ๋จ์ต๋๋ค.
๊ณฑ์ ยท๋๋์ ๋์ ์ํํธ๋ฅผ ์ฐ๋ ์ด์ ๋? ๋นํธ ์ํํธ๋ ๋๋ถ๋ถ์ CPU์์ ํ ์ฌ์ดํด ๋ง์ ์ฒ๋ฆฌ๋๋ ์ฐ์ฐ์ด๋ผ, 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ผ๋ก ๊ณฑํ๊ฑฐ๋ ๋๋ ๋ ๋งค์ฐ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ด ๋ฉ๋๋ค.