์ปดํจํฐ๊ฐ ์ดํดํ๋ ์ ๋ณด: ๋ช ๋ น์ด์ ๋ฐ์ดํฐ
CPU๋ ๊ธฐ๋ณธ์ ์ผ๋ก 0๊ณผ 1๋ง ์ดํดํ ์ ์๋ค.
๋นํธ(bit): 0๊ณผ 1์ ๋ํ๋ด๋ ๊ฐ์ฅ ์์ ์ ๋ณด์ ๋จ์๋ก, 1๋นํธ๋ 0 ๋๋ 1 2๊ฐ(21)์ ์ ๋ณด๋ฅผ ํํํ ์ ์๊ณ , 2๋นํธ๋ 4๊ฐ(22)์ ์ ๋ณด, 3๋นํธ๋ 8๊ฐ(23)์ ์ ๋ณด๋ฅผ ํํํ ์ ์๋ค.
์ฆ, N๋นํธ๋ 2N๊ฐ์ ์ ๋ณด๋ฅผ ํํํ ์ ์๋ค.
์คํํ๋ ํ๋ก๊ทธ๋จ์ ์์ญ๋ง, ์๋ฐฑ๋ง ๋นํธ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๋ฅผ ๋งํ ๋๋ ๋นํธ๋ณด๋ค ํฐ ๋จ์์ธ ๋ฐ์ดํธ(byte), ํฌ๋ก๋ฐ์ดํธ(kB), ๋ฉ๊ฐ๋ฐ์ดํธ(MB), ๊ธฐ๊ฐ๋ฐ์ดํธ(GB), ํ ๋ผ๋ฐ์ดํธ(TB) ๋ฑ์ ์ฌ์ฉํ๋ค.
๋ฐ์ดํธ(byte): 8๊ฐ ๋นํธ๋ฅผ ๋ฌถ์ ๋จ์๋ก ํ๋์ ๋ฐ์ดํธ๋ก ํํํ ์ ์๋ ์ ๋ณด๋ 28=256๊ฐ์ด๋ค.
| ๊ตฌ๋ถ | ๋นํธ |
| 1 byte | 8 bit |
| 1 kB | 1,000 byte |
| 1 MB | 1,000 kB |
| 1 GB | 1,000 MB |
| 1 TB | 1,000 GB |
โ 1kB๋ 1000byte์ธ๊ฐ? 1024byte์ธ๊ฐ?
๋ ํํ ๋ชจ๋ ๋ง๋ค. ๋์ ์ฐจ์ด์ ์ ํ๊ธฐ ๋ฐฉ์์ ์ฐจ์ด์ด๋ค. 10์ง์ ๊ธฐ๋ฐ์ 1000๋ก ํ๊ธฐํ ๋์๋ SI prefix names๋ก ํ๊ธฐํ๊ณ , 2์ง์ ๊ธฐ๋ฐ์ 1024๋ก ํ๊ธฐํ ๋์๋ IEC prefix names๋ก ํ๊ธฐํ๋ค.
IEC standard
- 1KiB = 1,024 bytes (big K)
- 1MiB = 1,024 KiB = 1,048,576 bytes
SI standard
- 1kB = 1,000 bytes (small k)
- 1MB = 1,000 kB = 1,000,000 bytes
์ปดํจํฐ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ ๋ 2์ง๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ ์ํ ๋ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค.
- ์ค์ ๋ก ๋ง์ดํฌ๋ก์ํํธ ์ด์์ฒด์ ๋ 2์ง๋ฒ์ ์ด์ฉํ ์ฉ๋ ๋จ์๋ฅผ ๋ํ๋ธ๋ค.
์ผ์์ํ์์๋ 10์ง๋ฒ์ด ํํ ์ฌ์ฉ๋๋ฏ๋ก, ๊ตญ์ ๋จ์๊ณ(SI)์์๋ 10์ ๊ฑฐ๋ญ์ ๊ณฑ์ ํตํด ์ซ์๋ฅผ ๋ํ๋ธ๋ค.
1kb = 1024 bytes? 1000 bytes? ๋ญ๊ฐ ๋ง์๊น? (์ปดํจํฐ๋ฅผ ์ด ๋ ์ ์ฅ ์ฉ๋์ด ํ๊ธฐ๋ณด๋ค ์ ์ ์ด์ )
1kb = ? bytes ๊ด๊ณ ์ ๋ต! ์ ๋ด ํ๋ ์ฉ๋์ ๊ด๊ณ ์ ๋์จ ์ฉ๋๋ณด๋ค ์์๊น?
velog.io
1KB๋ 1000๋ฐ์ดํธ? vs 1024๋ฐ์ดํธ?
๋ฐ์ดํฐ ์ฉ๋ ๋จ์๊ฐ 1ํฌ๋ก๋ฐ์ดํธ(KB)๊ฐ 1000๋ฐ์ดํธ์ธ์ง, 1024๋ฐ์ดํธ์ธ์ง ํท๊ฐ๋ฆฌ๋ ๋ถ๋ค์ด ์์ ๊ฑฐ ๊ฐ์๋ฐ์. ๊ฒฐ๋ก ์ ์ผ๋ก๋ ๋ ๋ค ๋ง๋ ํํ์ ๋๋ค. ๋ฌด์จ ๋ฑ๋ด์ง๊ฐ์ ์๋ฆฌ๋ ํ๋ฉด, 10์ง๋ฒ์ผ๋ก ๊ณ์ฐํ
whomini.tistory.com
์๋(word): CPU๊ฐ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ก, CPU๋ ํ๋ก๊ทธ๋จ์ ์๋ ๋จ์๋ก ์ฝ์ด ๋ค์ด๊ณ ์ฒ๋ฆฌํ๋ค.
- CPU๊ฐ ํ ๋ฒ์ 16๋นํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด 1์๋๋ 16๋นํธ๊ฐ ๋๊ณ , ํ ๋ฒ์ 32๋นํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด 32๋นํธ๊ฐ ๋๋ ๊ฒ์ด๋ค.
- ์๋ ํฌ๊ธฐ๋ CPU๋ง๋ค ๋ค๋ฅด์ง๋ง, ํ๋ ์ปดํจํฐ ๋๋ถ๋ถ์ ์๋ ํฌ๊ธฐ๋ 32๋นํธ ํน์ 64๋นํธ์ด๋ค.
๋ฐ์ดํฐ: 0๊ณผ 1๋ก ์ซ์ ํํํ๊ธฐ
CPU๋ ์ปดํจํฐ ๋ด๋ถ์์ 2์ง๋ฒ์ ์ฌ์ฉํด 2 ์ด์, 0 ์ดํ์ ์๋ฅผ ์ดํดํด์ผ ํ๋ค.
- 10์ง๋ฒ์ด ์ซ์ 9๋ฅผ ๋์ด๊ฐ๋ ์์ ์ ์๋ฆฌ์ฌ๋ฆผํด 0๋ถํฐ 9๊น์ง 10๊ฐ์ ์ซ์๋ง์ผ๋ก ๋ชจ๋ ์๋ฅผ ํํํ๋ฏ, 2์ง๋ฒ๋ ์ซ์ 1์ ๋์ด๊ฐ๋ ์์ ์ ์๋ฆฌ์ฌ๋ฆผํด 0๊ณผ 1, 2๊ฐ์ ์ซ์๋ง์ผ๋ก ๋ชจ๋ ์ซ์ ํํํ๋ค.
- 2์ง์๋ก ํํ๋ ์๋ ์ซ์ ๋ค์ ์๋์ฒจ์๋ก (2)๋ฅผ ๋ถ์ด๊ฑฐ๋ 2์ง์ ์์ 0b๋ฅผ ๋ถ์ธ๋ค.
16์ง๋ฒ
2์ง๋ฒ์ ์ซ์๊ฐ ์ปค์ง์๋ก ํํํ๋ ์ซ์์ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ์ด์ง๋ค๋ ๋จ์ ์ด ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ปดํจํฐ๊ฐ ์ดํดํ๋ ์ ๋ณด๋ฅผ ํํํ ๋๋ 2์ง์์ ํจ๊ป 16์ง์๋ ํจ๊ป ์ฌ์ฉํ๋ค.
16์ง์๋ฅผ ๋ํ๋ด๋ 16์ง๋ฒ(hexadecimal)์ ์ซ์ 15๋ฅผ ๋์ด๊ฐ๋ ์์ ์ ์๋ฆฌ์ฌ๋ฆผ์ ํ๋ ์ซ์ ํํ ๋ฐฉ์์ด๋ค.
- 16์ง์๋ก ํํ๋ ์๋ ์ซ์ ๋ค์ ์๋์ฒจ์๋ก (16)๋ฅผ ๋ถ์ด๊ฑฐ๋ 16์ง์ ์์ 0x๋ฅผ ๋ถ์ด๋ค.
- 16์ง์๋ MAC ์ฃผ์๋ IPv6 ์ฃผ์๋ฅผ ํํํ ๋ ์ฌ์ฉ๋๋ค.
| 10์ง์ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ... |
| 16์ง์ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 | 11 |
์ด์ง์ ํํ
์ด๋ค ์ x๋ฅผ ํํํ ๋, 10์ง์ ํํ์ x10, 2์ง์ ํํ์ x2 ๋ก ํ๊ธฐํ๋ฉด, 2์ง์๋ 0๊ณผ 1๋ง์ผ๋ก ์๋ฅผ ํํํ๊ธฐ ๋๋ฌธ์ 0๊ณผ 1์ ์ฝ๊ฒ ํํ ๊ฐ๋ฅํ๋ค. ์ฆ, 010=02, 110=12๋ก ํํํ ์ ์๋ค.
10์ง์๋ 0-9๊น์ง ๋ฌธ์๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก 210์ผ๋ก ํํํ ์ ์์ง๋ง, 2์ง์๋ ์๋ฆฟ์๋ฅผ ํ๋ ์ฌ๋ ค 102์ผ๋ก ํํ๋๋ค.
$0_{10} = 0_{2}$
$1_{10} = 1_{2}$
$2_{10} = 10_{2}$
$3_{10} = 11_{2}$
$4_{10} = 100_{2}$
$5_{10} = 101_{2}$
$6_{10} = 110_{2}$
๋ ๋ค๋ฅธ ์ ํํ ๋ฐฉ์์ ์๋ฅผ ํํํ๋ ์ง์์ ๊ฐ ์๋ฆฟ์์ ์์น๋ฅผ ๊ฑฐ๋ญ์ ๊ณฑํ ํ, ๊ฐ ์๋ฆฟ์์ ์๋ ์๋ฅผ ๊ณฑํ๊ณ ๋ชจ๋ ๋ํ๋ฉด ๊ธฐ์กด์ ์์ ๋์ผํ๊ฒ ํํํ ์ ์๋ค.
$423_{10}=4\times 10^{2}+2\times 10^{1}+3\times 10^{0}$
$423_{10}= 110100111_{2}$
$=1\times 2^{8}+1\times 2^{7}+0\times 2^{6}+1\times 2^{5}+0\times 2^{4}$
$+0\times 2^{3}+1\times 2^{2}+1\times 2^{1}+1\times 2^{0}$
$423_{10}$์ ์ด์ง์ ํํ์ผ๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ

2์ง๋ฒ๋ฟ๋ง ์๋๋ผ, 4, 8, 16์ง๋ฒ ๋ฑ ๋ค๋ฅธ ์ ํํ์๋ ๋๊ฐ์ด ์ ์ฉ๋๋ฉฐ, 16์ง๋ฒ์ 10-15๊น์ง ์ํ๋ฒณ A-F๋ก ํํํ๋ค.
์ด์ง๋ฒ์ ์ ์ ํํ
์ ์๋ ์์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ํํํ๊ธฐ ์ํด 2์ ๋ณด์๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๋ค.
โ์์ ๋ถํธ๋ฅผ ๋ํ๋ด๋ ์๋ฆฌ ํ๋๋ฅผ ๋ ๋ง๋ค์ง ์๋ ์ด์
$3_{10}=0 011_{2}$
$-3_{10}=1 011_{2}$
์ ์์ ์ ๊ฐ์ด ์์๋ฉด ๋งจ ์์๋ฆฌ๊ฐ 0, ์์๋ฉด 1๋ก ๋ง๋ค ์ ์๋ค.
ํ์ง๋ง, ์์ ๊ฐ์ ํํ์ ๋ ๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค.
1. 0์ ํํํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง๋ก ๋๋๋ค.
$0_{10}=0 000_{2}$
$-0_{10}=1 000_{2}$
2. ์ฐ์ฐ์ด ์ด๋ ค์์ง๋ค.
ex) $3_{10}+(-1_{10})=2_{10}$๋ฅผ 2์ง์๋ก ํํํ์ฌ ๊ฐ์ ์๋ฆฌ๋ฅผ ๋ํ๋ฉด, $0011_{2}+1001_{2}=1100_{2}$ ์ฆ -4๊ฐ ๋๋ค.
2์ง์์ 1์ ๋ณด์: 0์ด ๋ค์ด๊ฐ ์๋ฆฌ๋ 1๋ก, 1์ด ๋ค์ด๊ฐ ์๋ฆฌ๋ 0์ผ๋ก ๋ฐ๊พผ๋ค.
2์ง์์ 2์ ๋ณด์(2's Complement): 1์ ๋ณด์(1's Complement)์์ 1์ ๋ํ๋ค.
ex) $3_{10}=0011_{2}$์ 2์ ๋ณด์๋ฅผ ๊ตฌํด๋ณด๋ฉด,
1์ ๋ณด์: 1100 (0๊ณผ 1์ ๋ณ๊ฒฝ)
2์ ๋ณด์: 1101 (1์ ๋ณด์์ 1 ๋ํจ)
์ฆ, ์ด๋ค ์ด์ง์ a์ 2์ ๋ณด์๋ a์ ๋ํด์ก์ ๋, ์ฃผ์ด์ง ๋นํธ ์๋ฅผ ํ์๋ฆฌ ์ด๊ณผํ๋ $2^{n}_{10}$์ด ๋์ค๋ ์๋ฅผ ๋งํ๋ค.
$\begin{align*}
0011 \\
+1101 \\
\hline
1 0000 \\
= 16_{10} \\
= 2^{4}_{10}
\end{align*}$
์์ ๊ฐ์ด ํํ ๊ฐ๋ฅํ 4๋นํธ ์๋ฆฟ์๋ฅผ ๋์ด๊ฐ๋๋ฐ, ๋์ด๊ฐ 1์ ๋ฒ๋ฆฌ๋ฉด $0000_{2} = 0_{10}$์ด ๋๋ค. ์ฆ, ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ค.
์ค๋ฒ ํ๋ก์ฐ(Overflow): ํํ ๊ฐ๋ฅํ ์๋ฆฌ์๋ฅผ ๋์ด๊ฐ๋ ํ์
๋ฐ๋ผ์ ์ด๋ค 2์ง์ a์ ๋ณด์๋ฅผ -a๋ก ์ฌ์ฉํ๋ฉด, ๋ ์ด์ง์๋ฅผ ๋ํด์ ํํ ๊ฐ๋ฅํ ๋นํธ ์๋ฆฟ์๋ฅผ ๋์ด๊ฐ๋ ์๋ ๋ฒ๋ฆฌ๊ณ , ๋๋จธ์ง ์๋ก ๋ํด์ง ๋ ์ด์ง์์ ๊ฐ์ ํํํ ์ ์๋ค.
$$5_{10} - 3_{10}
= 0101_{2} + 1101_{2}
= 10010_{2}
= 0010_{2} (๋งจ ์ 1 ๋ฒ๋ฆผ)
= 2_{10} $$
2์ ๋ณด์์ ์ค๋ฒํ๋ก์ฐ ํ์์ ์ฌ์ฉํด์ ์์์์ ๋ง์ ์ ํจ์ฌ ์ฝ๊ฒ ์ํํ ์ ์๋ค.
$0_{10} = 0000_{2}$์ 2์ ๋ณด์ ํํ์ ๊ตฌํด๋ณด๋ฉด,
0000
1์ ๋ณด์: 1111
2์ ๋ณด์: 1 0000
์ค๋ฒํ๋ก์ฐ 1 ๋ฒ๋ฆผ: 0000
๋ฐ๋ผ์, 2์ ๋ณด์ ์ฒด๊ณ์ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ด์ฉํ๋ฉด 0์ ๋ํ ํํ๋ $0000_{2}$๋ก ์ ์ผํด์ง๋ฉฐ, 0 ํํ์ ๋ํ ๋ชจํธํจ์ ์์จ ์ ์๋ค.
2์ ๋ณด์ ์ฒด๊ณ์ ์ ํํ ๋ฒ์
2์ ๋ณด์ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด $1000_{2}$๋ $8_{10}$์ด ์๋ -8_{10}๋ก ์ฌ์ฉํ๋ค. $0001_{2}$~$0111_{2}$์ ๋ชจ๋ ์์์ธ $1_{10}$~$7_{10}$์ผ๋ก ํด์ํ์ ๋, ๊ฐ ์๋ค์ 2์ ๋ณด์๋ $1111_{2}$~$1001_{2}$์ธ $-1_{10}$~$-7_{10}$์ด ๋๋ค.
4๋นํธ ํํ์์ ๊ฐ ๋นํธ๋ง๋ค ํํํ ์ ์๋ ์๊ฐ ์ด $2^{4}=16$๊ฐ์ ์ ํํ์ด ๊ฐ๋ฅํ๋ฐ, 0์ 2์ ๋ณด์ ํํ์์ $0000_{2}$ ํ๋์ ํํ๋ง ๊ฐ์ง๋ฏ๋ก ๋๋จธ์ง ํํ ๊ฐ๋ฅํ ์๋ 15๊ฐ๊ฐ ๋๊ณ , -8~8 ์ด 16๊ฐ์ ์ซ์๊ฐ ๋๋จธ์ง ์๋ฆฌ๋ฅผ ํ๋์ฉ ์ฐจ์งํ๋ฉด ๊ฐ์ฅ ํฐ ์์ธ 8์ ์๋ฆฌ๋ฅผ ์ฐจ์งํ์ง ๋ชปํ๊ฒ ๋๋ค.
๊ฐ์ฅ ์์ ์ $-8_{10}$์ 2์ ๋ณด์๋ $1000_{2} → 0111_{2} (1์ ๋ณด์) → 1000_{2} (2์ ๋ณด์)$๋ก ์๊ธฐ ์ค์ค๋ก์ ๊ฐ์ ์๊ฐ ๋๋ค.
์ด๋ ๊ฒ ์ฃผ์ด์ง ๋นํธ ์๋ฆฟ์์์ ๊ฐ์ฅ ์์ ์๋ฅผ 'Most negative number'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฆ 4๋นํธ์์ 2์ ๋ณด์ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํด ํํํ ์ ์๋ ์๋ -8~7์ด๋ค.
์ด์ง์์ ์์ ํํ
ํํํ๊ณ ์ ํ๋ ์์์ ์ค์ ๋ก ์ ์ฅ๋ ์์ ๊ฐ์ ์ค์ฐจ๊ฐ ์กด์ฌํ ์ ์๋ค.
const a = 0.1;
const b = 0.2;
const c = 0.3;
if (a + b === c) console.log('๊ฐ์');
else console.log('๋ค๋ฆ');
// ๋ค๋ฆ ์ถ๋ ฅ
์ ์์ค์ฝ๋์ ๊ฐ์ด ์ค์ฐจ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ์ปดํจํฐ ๋ด๋ถ์์ ์์์ ์ ๋ํ๋ด๊ธฐ ์ํด ๋ํ์ ์ผ๋ก ๋ถ๋ ์์์ ํํ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ, ์ด ๋ฐฉ์์ ์ ๋ฐ๋์ ํ๊ณ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ถ๋ ์์์ (floating point): ์์์ ์ด ๊ณ ์ ๋์ด ์์ง ์์ ์์ ํํ ๋ฐฉ์์ผ๋ก, ํ์์ ๋ฐ๋ผ ์์์ ์ ์์น๊ฐ ์ด๋ํ ์ ์๊ณ ์ ๋์ ์ด๋ค.
์๋ฅผ ๋ค์ด, 10์ง์ 123.123์ด๋ผ๋ ์๋ฅผ $m\times 10^{n}$์ ํํ๋ก ๋ํ๋ด๋ฉด, $1.23123\times 10^{2}$์ผ๋ก ํํํ ์๋ ์๊ณ , $1231.23\times 10^{-1}$์ผ๋ก ํํํ ์ ์๋ค. ์ ๊ณฑ์ผ๋ก ํํ๋ 2์ -1์ ์ง์(exponent), 1.23123๊ณผ 1231.23์ ๊ฐ์(significand)๋ผ๊ณ ํ๋ค.
์ค๋๋ ๋๋ถ๋ถ์ ์ปดํจํฐ๋ 2์ง์์ ์ง์์ ๊ฐ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ ์ฅํ๋๋ฐ, ์ด์ ๊ฐ์ ๋ถ๋ ์์์ ์ ์ฅ ๋ฐฉ์์ IEEE754๋ผ๊ณ ํ๋ค.

์ด๋, ๋ถํธ(sign) ๋นํธ๊ฐ 0์ด๋ฉด ์์, 1์ด๋ฉด ์์์ด๋ค.
๊ฐ์์ ์ ์๋ถ์๋ 1๋ก ํต์ผ๋ ์ ๊ทํ๋ ์๊ฐ ์ ์ฅ๋๋ค. ์ฆ, ๊ฐ์๋ 1.OOO... ํํ๋ฅผ ๋๊ณ ์๋ค. ์๋ฅผ ๋ค์ด 2์ง์ 1101011.1010101์ ๊ฒฝ์ฐ $1.1010111010101\times 2^{6}$์ผ๋ก ์ ์ฅ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ $2^{์ง์}\times 1.OOO...$ ํํ์ ์์๋ฅผ ์ ์ฅํ ๋, ์ง์์ ํด๋นํ๋ ๊ฐ๊ณผ OOO...์ ํด๋นํ๋ ์์ ๋ถ๋ถ๋ง ์ ์ฅํ๋ฉด ๋๋ค.
์ปดํจํฐ๊ฐ ์ง์๋ฅผ ์ ์ฅํ ๋๋ ๋ฐ์ด์ด์ค ๊ฐ์ด ๋ํด์ ธ์ ์ ์ฅ๋๋ฉฐ, ๋ฐ์ด์ด์ค ๊ฐ์ $2^{k-1}-1$(k๋ ์ง์์ ๋นํธ ์)์ด๋ค.
์ง์๋ฅผ ํํํ๊ธฐ ์ํด 8๋นํธ๊ฐ ์ฌ์ฉ๋์๋ค๋ฉด ๋ฐ์ด์ด์ค ๊ฐ์ $2^{7}-1$์ธ 127์ด๊ณ , 11๋นํธ๊ฐ ์ฌ์ฉ๋์๋ค๋ฉด ๋ฐ์ด์ด์ค ๊ฐ์ $2^{10}-1$์ธ 1,023์ด๋ค.
๋ฐ๋ผ์ ์ ์์ ์ ์ง์๋ 127+6=133์ผ๋ก ์ ์ฅ๋๋ค.

์ ์ํ ์ ์ 10์ง์ ์์๋ฅผ 2์ง์๋ก ํํํ ๋, 10์ง์ ์์์ 2์ง์ ์์์ ํํ์ด ๋ฑ ๋ง์๋จ์ด์ง์ง ์์ ์ ์๋ค.
์๋ฅผ ๋ค์ด, 1/3์ด๋ผ๋ ๋ถ์๋ฅผ $m\times 3^{n}$ ๊ผด๋ก ๋ํ๋ด๊ณ ์ถ๋ค๋ฉด ๊ฐ๋จํ๊ฒ $1\times 3^{-1}$์ผ๋ก ํํํ๋ฉด ๋์ง๋ง, 10์ง์๋ก ํํํ๊ธฐ ์ํด $m\times 10^{n}$์ ๊ผด๋ก ๋ํ๋ด๊ธฐ๋ ์ด๋ ต๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก 10์ง์ 0.1์ $m\times 10^{n}$์ ๊ผด๋ก ๊ฐ๋จํ๊ฒ ๋ํ๋ผ ์ ์์ง๋ง, ๊ฐ์ ์๋ฅผ $1.m\times 2^{n}$์ ๊ผด๋ก ํํํ๋ ค๋ฉด ๋ฌดํํ๊ฒ ๋ง์ ์์์ ์ด ํ์ํ๋ค.
์ปดํจํฐ์ ์ ์ฅ๊ณต๊ฐ์ ํ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ฌดํํ ๋ง์ ์์์ ์ ์ ์ฅํ ์ ์์ด์ ์ผ๋ถ ์์์ ์ ์๋ตํด ์ ์ฅํ๋ค. ๊ทธ๋์ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ฐ์ดํฐ: 0๊ณผ 1๋ก ๋ฌธ์ ํํํ๊ธฐ
์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ์๋ค์ ์งํฉ์ ๋ฌธ์ ์งํฉ(character set)์ด๋ผ๊ณ ํ๋ค.
๋ฌธ์ ์ธ์ฝ๋ฉ(character encoding): ๋ฌธ์ ์งํฉ์ ์ํ ๋ฌธ์๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ๋ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์ ์ฝ๋๋ก ๋ณํํ๋ ๊ณผ์
๋ฌธ์ ๋์ฝ๋ฉ(character decoding): 0๊ณผ 1๋ก ํํ๋ ๋ฌธ์๋ฅผ ์ฌ๋์ด ์ดํดํ๋ ๋ฌธ์๋ก ๋ณํํ๋ ๊ณผ์
๋ฌธ์ ์งํฉ 1. ์์คํค(ASCII)
์ด์ฐฝ๊ธฐ ์ปดํจํฐ์์ ์ฌ์ฉํ๋ ๋ฌธ์ ์งํฉ ์ค ํ๋๋ก, ์์ด์ ์ํ๋ฒณ๊ณผ ์๋ผ๋น์ ์ซ์, ์ผ๋ถ ํน์ ๋ฌธ์๋ฅผ ํฌํจํ๋ค.
- ํ๋์ ์์คํค ๋ฌธ์๋ฅผ ํํํ๊ธฐ ์ํด์๋ 8๋นํธ(1๋ฐ์ดํธ)๋ฅผ ์ฌ์ฉํ๋ค. 8๋นํธ ์ค 1๋นํธ๋ ํจ๋ฆฌํฐ ๋นํธ๋ก ์ฌ์ฉ๋๋ค.
ํจ๋ฆฌํฐ ๋นํธ: ์ค๋ฅ ๊ฒ์ถ์ ์ํด ์ฌ์ฉ๋๋ ๋นํธ - ์ฆ ์ค์ง์ ์ผ๋ก ๋ฌธ์ ํํ์ ์ํด ์ฌ์ฉ๋๋ ๋นํธ๋ 7๋นํธ๋ก, ํํ ๊ฐ๋ฅํ ์ ๋ณด ๊ฐ์ง์๋ $2^{7}$๊ฐ์ด๋ฏ๋ก ์ด 128๊ฐ์ ๋ฌธ์๋ฅผ ํํํ ์ ์๋ค.
- ์์คํค ๋ฌธ์๋ค์ 0๋ถํฐ 127๊น์ง์ ์ซ์ ์ค ํ๋์ ๊ณ ์ ํ ์์ ๋์๋๋๋ฐ ์ด ์๋ฅผ ์์คํค ์ฝ๋๋ผ๊ณ ํ๋ค. ์์คํค ์ฝ๋๋ฅผ 2์ง์๋ก ํํํจ์ผ๋ก์จ ์์คํค ๋ฌธ์๋ฅผ 0๊ณผ 1๋ก ๋์์ํฌ ์ ์๋ค.
ex) 'A'๋ 10์ง์ 65๋ก ์ธ์ฝ๋ฉ๋๊ณ , 'a'๋ 10์ง์ 97๋ก ์ธ์ฝ๋ฉ ๋๋ค. - ํ์ง๋ง, ์์คํค ์ฝ๋๋ ํ๊ธ์ ํ๊ธฐํ ์ ์๋ค.
EUC-KR ์ธ์ฝ๋ฉ
ํ๊ธ ์ธ์ฝ๋ฉ ๋ฐฉ์ ์ค ํ๋๋ก, KS X 1001, KS X 1003์ด๋ผ๋ ๋ฌธ์ ์งํ ๊ธฐ๋ฐ์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ด๋ค.
์์คํค ๋ฌธ์๋ฅผ ํํํ ๋๋ 1๋ฐ์ดํธ, ํ๋์ ํ๊ธ ๊ธ์๋ฅผ ํํํ ๋๋ 2๋ฐ์ดํธ ํฌ๊ธฐ์ ์ฝ๋๋ฅผ ๋ถ์ฌํ๋ค.
ํ์ง๋ง, EUC-KR ์ธ์ฝ๋ฉ ๋ฐฉ์๋ ๋ชจ๋ ํ๊ธ ์กฐํฉ์ ํํํ ์ ์์ ์ ๋๋ก ๋ง์ ์์ด ์๋๋ค. (ex: ์, ๋ ๋ฑ์ ํํ ๋ถ๊ฐ)
๋ฌธ์ ์งํฉ 2. ์ ๋์ฝ๋(Unicode)
ํ๊ธ์ ํฌํจํด EUC-KR์ ๋นํด ํจ์ฌ ๋ง์ ์ธ์ด, ํน์๋ฌธ์, ํ์ดํ, ์ด๋ชจํฐ์ฝ๊น์ง ์ฝ๋๋ก ํํํ ์ ์๋ ํต์ผ๋ ๋ฌธ์ ์งํฉ์ด๋ค.
- ์ ๋์ฝ๋ ๋ฌธ์ ์งํฉ์ ์ํ ๋ฌธ์์๋ ๊ณ ์ ํ ๊ฐ์ด ๋ถ์ฌ๋์ด ์๋ค. ex: 'ํ' → 0xD55C
- ์์คํค ์ฝ๋์ EUC-KR์ ๊ธ์์ ๋ถ์ฌ๋ ๊ฐ์ ๊ทธ๋๋ก ์ธ์ฝ๋ฉ ๊ฐ์ผ๋ก ์ผ์์ง๋ง, ์ ๋์ฝ๋๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ฝ๋ฉํ๋ค.
์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์๋ UTF-8, UTF-16, UTF-32 ๋ฑ์ด ์๋ค. ๊ฐ๋ณ ๊ธธ์ด ์ธ์ฝ๋ฉ ๋ฐฉ์์ด๋ค.
์ฆ, ์ธ์ฝ๋ฉ๋ ๊ฒฐ๊ณผ์ ๊ธธ์ด๊ฐ ์ผ์ ํ์ง ์์ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
base64 ์ธ์ฝ๋ฉ
๋ฌธ์๋ฟ๋ง ์๋๋ผ, ์ด์ง ๋ฐ์ดํฐ๊น์ง ๋ณํํ ์ ์๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ผ๋ก, ๋จ์ ๋ฌธ์ ์ธ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ๋ฑ ๋ชจ๋ ์์คํค ๋ฌธ์ ํํ๋ก ํํํ ์ ์๋ค.
base64๋ 64์ง๋ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋์ ํ๋์ base64 ์ธ์ฝ๋ฉ ๊ฐ์ ํํํ๊ธฐ ์ํด 64๊ฐ์ ๋ฌธ์๊ฐ ์ฌ์ฉ๋๋ค. ์ฆ, $2^{6}$์ ์ง์์ธ 6๋นํธ๊ฐ ํ์ํ๋ค.
์๋ฅผ ๋ค์ด, 'abc'๋ผ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด 'a'๋ 97, 'b'๋ 98, 'c'๋ '99' ์์คํค ์ฝ๋๋ก ์ธ์ฝ๋ฉ๋ ์ ์๋ค. ๊ฐ๊ฐ์ ์์คํค ์ฝ๋๋ 8๋นํธ ํฌ๊ธฐ์ 2์ง์์ธ 01100001, 01100010, 01100011๋ก ํํํ ์ ์๋ค.
| ๋ฌธ์ | a | b | c | |||||||||||||||||||||
| ์์คํค | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
| Base64 | Y | W | J | j | ||||||||||||||||||||
base64 ๋์ํ์ ๋ฐ๋ผ 6๋นํธ์ฉ ๋์ด์ ๋ณํํ๋ฉด 'YWJj'๊ฐ ๋๋ค.
ํ์ง๋ง, 6๋นํธ์ฉ ๋๋์ด ๋จ์ด์ง์ง ์๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ง์ฝ, 'ab'์ ๊ฒฝ์ฐ ์ด 16๋นํธ์ด๋ฏ๋ก 6๋นํธ๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋๋์ด ๋จ์ด์ง์ง ์๋ ์๋ฆฌ๋ฅผ 0์ผ๋ก ์ฑ์์ง๋ ํจ๋ฉ์ด ๋๊ณ , '='๋ก ์ธ์ฝ๋ฉ ๋๋ค.
| ๋ฌธ์ | a | b | ||||||||||||||||||||||
| ์์คํค | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Base64 | Y | W | J | = | ||||||||||||||||||||
๋ช ๋ น์ด
๋ช ๋ น์ด๋ ์ํํ ๋์๊ณผ ์ํํ ๋์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ํํ ๋์์ ์ํํ ๋์์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ ์์ฒด๊ฐ ๋ ์๋ ์๊ณ , ๋์์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น๊ฐ ๋ ์ ์๋ค.
์ฐ์ฐ์ฝ๋(opcode): ๋ช ๋ น์ด๊ฐ ์ํํ ๋์
์คํผ๋๋(operand): ๋์์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ ํน์ (๋ฉ๋ชจ๋ฆฌ๋ ๋ ์ง์คํฐ์ ์ฃผ์์ ๊ฐ์ด)๋์์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น
์ฆ, ํ๋์ ๋ช ๋ น์ด๋ ์ฐ์ฐ์ฝ๋์ 0๊ฐ ์ด์์ ์คํผ๋๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋ช ๋ น์ด์์ ์ฐ์ฐ ์ฝ๋๊ฐ ๋ด๊ธฐ๋ ์์ญ์ ์ฐ์ฐ ์ฝ๋ ํ๋, ์คํผ๋๋๊ฐ ๋ด๊ธฐ๋ ์์ญ์ ์คํผ๋๋ ํ๋๋ผ๊ณ ํ๋ค.

๋ณดํต ์คํผ๋๋ ํ๋์๋ ์ซ์๋ ๋ฌธ์์ ๊ฐ์ด ์ฐ์ฐ ์ฝ๋์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๊ฐ ์ง์ ๋ช ์๋๊ธฐ๋ณด๋ค๋ ๋ง์ ๊ฒฝ์ฐ ์ฐ์ฐ ์ฝ๋์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋ ์ง์คํฐ์ ์ด๋ฆ์ด ๋ช ์๋๋ค. ๊ทธ๋์ ์คํผ๋๋ ํ๋๋ฅผ ์ฃผ์ ํ๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ง์ฝ, ๋ช ๋ น์ด์ ์ฌ์ฉ๋ ์คํผ๋๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ช ์๋์๋ค๋ฉด ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๋ ํ์ํ๋ค.
์๋ฅผ ๋ค์ด, CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด '๋ํด๋ผ. 100๋ฒ์ง ๊ฐ์. 10์' ์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ์ธ์ถํ ๋ช ๋ น์ด๋ ๊ณง๋ฐ๋ก ์คํ๋ ์ ์๋ค. ์คํผ๋๋ ํ๋์ ๋ช ์๋ 100๋ฒ์ง ๊ฐ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ํ ๋ฒ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ผ ํ๋ค.
์ฐ์ฐ์ฝ๋๋ CPU์ ๋ฐ๋ผ ๊ตฌ์ฒด์ ์ธ ์๊น์๊ฐ ๋ค๋ฅด์ง๋ง, ๋๋ถ๋ถ์ CPU๊ฐ ๊ณตํต์ ์ผ๋ก ์ดํดํ๋ ๋ํ์ ์ธ ์ฐ์ฐ ์ฝ๋์ ์ ํ์ ๋ค์๊ณผ ๊ฐ๋ค.
| ์ ํ | ์ฐ์ฐ์ฝ๋ | ์ค๋ช |
| ๋ฐ์ดํฐ ์ ์ก | MOVE | ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ๋ผ |
| STORE | ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋ผ | |
| LOAD(FETCH) | ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ CPU๋ก ๊ฐ์ ธ์๋ผ | |
| PUSH | ๋ฐ์ดํฐ๋ฅผ ์คํ์ ์ ์ฅํด๋ผ | |
| POP | ์คํ์ ์ต์๋จ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋ผ | |
| ์ฐ์ /๋ ผ๋ฆฌ ์ฐ์ฐ | ADD/SUBTRACT/MULTIPLY/DIVIDE | ๋ง์ /๋บ์ /๊ณฑ์ /๋๋์ ์ํํด๋ผ |
| INCREMENT DECREMENT |
์คํผ๋๋์ 1์ ๋ํด๋ผ ์คํผ๋๋์ 1์ ๋นผ๋ผ |
|
| AND/OR/NOT | AND/OR/NOT ์ฐ์ฐ์ ์ํํด๋ผ | |
| COMPARE | ๋ ๊ฐ์ ์ซ์ ํน์ TRUE/FALSE ๊ฐ์ ๋น๊ตํด๋ผ | |
| ์ ์ด ํ๋ฆ ๋ณ๊ฒฝ | JUMP | ํน์ ์ฃผ์๋ก ์คํ ์์ ์ฎ๊ฒจ๋ผ |
| CONDITIONAL JUMP | ์กฐ๊ฑด์ ๋ถํฉํ ๊ฒฝ์ฐ ํน์ ์ฃผ์๋ก ์คํ ์์ ์ฎ๊ฒจ๋ผ | |
| HALT | ํ๋ก๊ทธ๋จ ์คํ ๋ฉ์ถฐ๋ผ | |
| CALL | ๋๋์์ฌ ์ฃผ์๋ฅผ ์ ์ฅํ ์ฑ ํน์ ์ฃผ์๋ก ์คํ ์์ ์ฎ๊ฒจ๋ผ | |
| RETURN | CALL์ ํธ์ถํ ๋ ์ ์ฅํ๋ ์ฃผ์๋ก ๋์๊ฐ๋ผ | |
| ์ ์ถ๋ ฅ ์ ์ด | READ(INPUT) | ํน์ ์ ์ถ๋ ฅ์ฅ์น๋ก๋ถํฐ ๋ฐ์ดํฐ ์ฝ์ด๋ผ |
| WRITE(OUTPUT) | ํน์ ์ ์ถ๋ ฅ์ฅ์น๋ก ๋ฐ์ดํฐ ์จ๋ผ | |
| START IO | ์ ์ถ๋ ฅ์ฅ์น ์์ํด๋ผ | |
| TEST IO | ์ ์ถ๋ ฅ์ฅ์น์ ํ์ฌ ์ํ ํ์ธํด๋ผ |
๊ธฐ๊ณ์ด์ ์ด์ ๋ธ๋ฆฌ์ด
๊ธฐ๊ณ์ด(machine code): CPU๊ฐ ์ดํดํ ์ ์๋๋ก 0๊ณผ 1๋ก ํํ๋ ์ ๋ณด๋ฅผ ์๋ ๊ทธ๋๋ก ํํํ ์ธ์ด
์ด์ ๋ธ๋ฆฌ์ด(assembly language): 0๊ณผ 1๋ก ํํ๋ ๊ธฐ๊ณ์ด๋ฅผ ์ฝ๊ธฐ ํธํ ํํ๋ก ๋จ์ ๋ฒ์ญํ ์ธ์ด
- ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๋ณด๋ฉด CPU๊ฐ ์ดํดํ ์ ์๋ ๋ช ๋ น์ด์ ์ข ๋ฅ์ ๋์ ํ์ ํ ์ ์๋ค.
- ์ด์ ๋ธ๋ฆฌ์ด๋ ๊ธฐ๊ณ์ด๋ฅผ ๊ทธ๋๋ก ๋ฒ์ญํ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์, ๋ช ๋ น์ด์ ์ข ๋ฅ์ ์๊น์๊ฐ ๋ค๋ฅด๋ฉด ๊ธฐ๊ณ์ด๋ ๋ฌ๋ผ์ง๊ณ ์ด๋ฅผ ๋ฒ์ญํ ์ด์ ๋ธ๋ฆฌ์ด๋ ๋ฌ๋ผ์ง๋ค.
- ์ฆ, ์ฌ๋ฌ ํ๋ซํผ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋๋ ํน์ CPU์๋ง ์์กด์ ์ธ ์ฝ๋๋ฅผ ๋ง๋ค์ง ์์์ผ ํ๋ค.
โ ์ด์ ๋ธ๋ฌ vs ์ปดํ์ผ๋ฌ vs ์ธํฐํ๋ฆฌํฐ
- ์ด์
๋ธ๋ฌ(Assembler)
์ด์ ๋ธ๋ฆฌ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ํ๋ก์ธ์ ๋ช ๋ น์ด์ 1๋ 1๋ก ๋์๋๋ ์ ๊ธ์ธ์ด์ด๋ค.
์ฌ๋์ด ์ฝ๊ณ ์์ฑ ๊ฐ๋ฅํ ๊ธฐ๊ณ์ด์ด๋ค. ex) NASM, MASM
- ๊ณ ๊ธ ์ธ์ด๋ณด๋ค ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๋ฉฐ, ํ๋์จ์ด์ ๋ฐ์ ํ ์์ ์ ์ ํฉํ๋ค.
- ์์ฑ์ด ์ด๋ ต๊ณ ์ ์ง๋ณด์๊ฐ ๊น๋ค๋กญ๋ค. - ์ปดํ์ผ๋ฌ(Compiler)
๊ณ ๊ธ ์ธ์ด(C, C++, JAVA ๋ฑ)๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ์ํํธ์จ์ด๋ก, ํ๋ก๊ทธ๋จ ์คํ ์ ์ ํ ๋ฒ์ ์ด๋ฃจ์ด์ง๋ฉฐ ๋ณํ ๊ฒฐ๊ณผ๋ ์คํํ์ผ๋ก ์ ์ฅ๋๋ค. ex) GCC, Clang, Visual C++ Compiler
- ์ปดํ์ผ ํ์๋ ์คํ ํ์ผ์ด ์์ฑ๋์ด ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์คํ ์ ์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค(์ปดํ์ผ ์๋ฌ) - ์ธํฐํ๋ฆฌํฐ(Interpreter)
๊ณ ๊ธ ์ธ์ด(Python, Ruby, JS, PHP ๋ฑ)๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ํ ์ค ๋๋ ํ ๋ธ๋ก์ฉ ์ฝ๊ณ ์คํํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ์คํํ์ผ์ ์์ฑํ์ง ์๊ณ ์ฝ๋๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฆ์ ์คํํ๋ค.
- ์คํ ์๋๊ฐ ๋น๊ต์ ๋๋ฆฌ์ง๋ง, ์ค์๊ฐ ๋๋ฒ๊น ์ด ๊ฐ๋ฅํ๋ค.
- ์คํ ํ์ผ์ด ์์ฑ๋์ง ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์์ ํ ๋ ์ ์ฐํ๋ค.
| Assembler | Compiler | Interpreter |
| ๋ฒ์ญ๊ธฐ | ๋ฒ์ญ๊ธฐ | ํต์ญ๊ธฐ |
| ์ ๊ธ์ธ์ด | ๊ณ ๊ธ์ธ์ด | ๊ณ ๊ธ์ธ์ด |
| ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ | ์ง์ฌ์ง ์์ค์ฝ๋ ์ ์ฒด๋ฅผ ํ ๋ฒ์ ๋ฒ์ญ | ๋ช ๋ น ํ๋ํ๋ ์คํํ ๋๋ง๋ค ๋ฒ์ญ |
| ์ ์ฒด ์์ค์ฝ๋ ๋ฒ์ญ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ง, ์ ์ฒด ์คํ ์๊ฐ์ ๋น๊ต์ ๋น ๋ฆ | ์์ค ์ฝ๋ ํ ์ค ๋ฒ์ญ์๋ ์ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ง, ์ ์ฒด ์คํ ์๊ฐ์ ๋น๊ต์ ๋๋ฆผ | |
| ๋ฒ์ญ ํ ์ค๋ฅ ์๋ ค์ค(๋๋ฒ๊น ์ด ์ด๋ ค์) | ์์ ๋ฐ ๋๋ฒ๊น ์ฌ์ | |
| Java, C, C++ ๋ฑ ๋ฒ์ญํ ๋ ์ฌ์ฉ | Python, Perl ๋ฑ ๋ฒ์ญํ ๋ ์ฌ์ฉ |
๋ช ๋ น์ด ์ฌ์ดํด
๋ฉ๋ชจ๋ฆฌ ์์๋ ํ๋ก๊ทธ๋จ์ด ์ ์ฅ๋์ด ์๊ณ , ์ด ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ CPU๋ ์ด ๋ฉ๋ชจ๋ฆฌ์์ ๋ช ๋ น์ด๋ฅผ ์ธ์ถํ๊ณ ์คํํ๊ธฐ ๋ฐ๋ณตํ๋ฉฐ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์คํํด ๋๊ฐ๋ค. ์ด๋ฌํ ๊ณผ์ ์ ๋ช ๋ น์ด ์ฌ์ดํด์ด๋ผ๊ณ ํ๋ค.
๋ช ๋ น์ด ์ฌ์ดํด: CPU๊ฐ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ํ๋ก๊ทธ๋จ ์ ๊ฐ๊ฐ์ ๋ช ๋ น์ด๋ค์ ์ผ์ ํ ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ์คํ๋ ๋์ ์ฃผ๊ธฐ๋ฅผ ๋ปํ๋ค.
- ์ธ์ถ ์ฌ์ดํด(fetch cycle): ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ช ๋ น์ด๋ฅผ CPU๋ก ๊ฐ์ ธ์ค๋ ๋จ๊ณ
- ์คํ ์ฌ์ดํด(execution cycle): CPU๋ก ๊ฐ์ ธ์จ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋จ๊ณ
- ๊ฐ์ ์ฌ์ดํด(indirect cycle): ๋ช
๋ น์ด๋ฅผ ์คํํ๊ธฐ ์ํด ํ ๋ฒ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๋จ๊ณ
→ ์คํผ๋๋ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ช ์๋ ๊ฒฝ์ฐ CPU๊ฐ ๋ช ๋ น์ด ์ธ์ถํ๋๋ผ๋ ํ ๋ฒ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ผ ํ๋ค. - ์ธํฐ๋ฝํธ ์ฌ์ดํด(interrupt cycle): ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋จ๊ณ

์ฐธ๊ณ ์๋ฃ
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ปดํจํฐ ๊ณผํ์ด๋ค.
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ปดํจํฐ ๊ณผํ์ด๋ค with CS ๊ธฐ์ ๋ฉด์ | ๊ฐ๋ฏผ์ฒ - ๊ต๋ณด๋ฌธ๊ณ
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ปดํจํฐ ๊ณผํ์ด๋ค with CS ๊ธฐ์ ๋ฉด์ | ๊ธฐ์ ๋ฉด์ ๊ณผ ์ค๋ฌด์ ํ์ํ CS ์ง์, ํ ๊ถ์ผ๋ก ๋๋ด์!ํ๋ก๊ทธ๋จ์ ์คํ ์๋ฆฌ๋ฅผ ์ดํดํ์ง ๋ชปํ ์ฑ ‘์ผ๋จ ์๋๋ง ํ๋๋ก ๋ง๋๋ ๊ฒ’๊ณผ ์
product.kyobobook.co.kr
2์ง๋ฒ์ ์ ์ ํํ
์ฐ๋ฆฌ๋ ์ค์ํ์์ 10์ง์(Decimal)์ ๊ต์ฅํ ์ต์ํฉ๋๋ค. 10์ง์๋ 0~9 ์ฌ์ด์ ๋ฌธ์๋ค์ ์ด์ฉํด ์๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ์ง๋ง ์ปดํจํฐ๋ 2์ง๋ฒ(Binary System)์ ์ด์ฉํด ์๋ฅผ ํํํฉ๋๋ค. 2์ง๋ฒ์ 0
idiqpnm.tistory.com
์ด์ ๋ธ๋ฌ/์ปดํ์ผ๋ฌ/์ธํฐํ๋ฆฌํฐ
์ด์ ๋ธ๋ฌ vs ์ปดํ์ผ๋ฌ vs ์ธํฐํ๋ฆฌํฐ ๊ฐ๊ฐ์ ํน์ง ๋ฐ ์ฐจ์ด์
์ปดํจํฐ๊ณตํ๊ณผ, ์ปดํจํฐ๊ณผํ๊ณผ ์ ๊ณต์ ์๋์ง๋ง ๊ณต๋์์ด์ด์ ์ฝ๋ฉํ ์ผ์ ๋ง๋ค๋ณด๋ ๊ด๋ จ ๋ธ๋ก๊ทธ๋ค์ ๋ง์ด ๋์๋ค๋๊ณ ์๋ค. ๊ทธ ์ค ์ฉ์ด๊ฐ ํท๊ฐ๋ฆฌ๋ ๊ฒ๋ค์ด ๋ค์ ์์ด์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค! ๊ทธ
captain-turtle.tistory.com
์ด์ ๋ธ๋ฌ/์ปดํ์ผ๋ฌ/์ธํฐํ๋ฆฌํฐ
์ปดํ์ผ๋ฌ Compiler / ์ด์ ๋ธ๋ฌ Assembler / ์ธํฐํ๋ฆฌํฐ Interpreter
Compiler๋? ๊ฐ๋จํ๊ฒ ๋งํด ๋ฒ์ญ๊ธฐ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ๊ณ ๊ธ์ธ์ด(high-level language)๋ผ๊ณ ํ๋ Java, C, C++ ๋ฑ์ผ๋ก ์์ฑํฉ๋๋ค. ํ์ง๋ง ์ปดํจํฐ๋ ๊ธฐ๊ณ ์ธ์ด(Machin language)์ธ 0๊ณผ 1๋ง ์์๋ฃ๊ธฐ ๋
saeatechnote.tistory.com