ํ ์คํธ โ 2์ง์ / ASCII ๋ณํ๊ธฐ๋?
์ด ๋๊ตฌ๋ ์ ๋ ฅํ ํ ์คํธ๋ฅผ 2์ง์ ํํ๋ก ๋ฐ๊ฟ ์ค๋๋ค. ์ปดํจํฐ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํด ํ ์คํธ๋ฅผ ์ซ์๋ก ์ ์ฅํ๋๋ฐ, ๊ธฐ๋ณธ์ ์ธ ์๋ฌธ์ยท์ซ์ยท๋ฌธ์ฅ ๋ถํธ์ ๊ฒฝ์ฐ ๊ทธ ์ธ์ฝ๋ฉ์ด ๋ฐ๋ก ASCII์ ๋๋ค. ๊ฐ ๋ฌธ์๋ ๊ณ ์ ํ ์ซ์ ์ฝ๋์ ๋์ํ๋ฉฐ, ์ฌ๊ธฐ์๋ ๊ทธ ์ฝ๋๋ฅผ 8๋นํธ 2์ง์ ๋ฌธ์์ด(0๊ณผ 1 ์ฌ๋ ์๋ฆฌ)๋ก ํ์ํฉ๋๋ค. ๋ํ 10์ง์ ASCII ์ฝ๋์ 16์ง์ ๊ฐ๋ ํจ๊ป ๋ณด์ฌ ์ฃผ๋ฏ๋ก ์ด๋ค ์ง๋ฒ์ผ๋ก๋ ๊ฒฐ๊ณผ๋ฅผ ๊ต์ฐจ ํ์ธํ ์ ์์ต๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์ ๋ ฅ๋์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ๋ถ์ฌ๋ฃ์ ๋ค ์คํํ์ธ์. ๋ฉ์ธ ๋ฐ์ค์๋ ๋ฌธ์ ํ๋๋น 8๋นํธ ๋ฌถ์์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ ์ฒด 2์ง์ ๋ฌธ์์ด์ด ํ์๋ฉ๋๋ค. ์๋ ํ์๋ ์ด์ ๋์ํ๋ 10์ง์ ASCII ์ฝ๋์ 16์ง์ ๊ฐ, ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ์์ ์ด ๋นํธ ์๊ฐ ๋์ต๋๋ค. ๊ณต๋ฐฑ๊ณผ ๋ฌธ์ฅ ๋ถํธ๋ ํ๋์ ๋ฌธ์๋ก ๊ณ์ฐ๋๋ฉฐ, ๊ณต๋ฐฑ์ ASCII 32์ ํด๋นํฉ๋๋ค.
๊ณ์ฐ ๊ณต์ ์ค๋ช
๊ฐ ๋ฌธ์ c์ ๋ํด ๋ฌธ์ ์ฝ๋(์๋ฐ์คํฌ๋ฆฝํธ์ charCodeAt๊ฐ ๋ฐํํ๋ ๊ฐ๊ณผ ๋์ผ)๋ฅผ ๊ฐ์ ธ์ 2์ง์๋ก ๋ณํํ ๋ค, ์ผ์ชฝ์ 0์ ์ฑ์ 8์๋ฆฌ๋ก ๋ง์ถฅ๋๋ค.
์๋ฅผ ๋ค์ด ์ํ๋ฒณ A์ ASCII ์ฝ๋๋ 65์ด๋ฉฐ, 2์ง์๋ก๋ 1000001์ ๋๋ค. ์ด๋ฅผ 8์๋ฆฌ๋ก ์ฑ์ฐ๋ฉด 01000001์ด ๋ฉ๋๋ค. ์ด ๋นํธ ์ = 8 ร ๋ฌธ์ ๊ฐ์์ ๋๋ค.
$$\text{bits} = 8 \times n_{chars}$$
์ค์ ์์
๋จ์ด Hi๋ฅผ ๋ณํํด ๋ด ์๋ค. "H"๋ ASCII 72 โ 2์ง์ 01001000 โ 16์ง์ 48์ ๋๋ค. "i"๋ ASCII 105 โ 2์ง์ 01101001 โ 16์ง์ 69์ ๋๋ค.
$$\text{"H"} \rightarrow 72 \rightarrow 01001000 \rightarrow \text{48}_{16}$$$$\text{"i"} \rightarrow 105 \rightarrow 01101001 \rightarrow \text{69}_{16}$$๋ฐ๋ผ์ "Hi"๋ 01001000 01101001, 10์ง์ 72 105, 16์ง์ 48 69๊ฐ ๋๋ฉฐ, ๋ฌธ์ 2๊ฐ์ ์ด 16๋นํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ASCII ๋ฌธ์ ์ฐธ์กฐ ํ
ํ์ค ASCII๋ ๊ฐ ๋ฌธ์์ 0๋ถํฐ 127๊น์ง์ ์ซ์๋ฅผ ํ ๋นํฉ๋๋ค. ์ด ๋ณํ๊ธฐ์์๋ ๊ฐ ๋ฌธ์์ ์ญ์ง ์ฝ๋๋ฅผ 8๋นํธ ์ด์ง ๊ฐ(8๋นํธ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด 0์ผ๋ก ์ผ์ชฝ ์ฑ์ฐ๊ธฐ)๊ณผ ๋ ์๋ฆฌ 16์ง์ ๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค. ์๋ ํ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ธ์ ๊ฐ๋ฅ ๋ฌธ์๋ฅผ ๋์ดํฉ๋๋ค.
| ๋ฌธ์ | ์ญ์ง์ | 8๋นํธ ์ด์ง์ | 16์ง์ |
|---|---|---|---|
| (๊ณต๋ฐฑ) | 32 | 00100000 | 20 |
| ! | 33 | 00100001 | 21 |
| 0 | 48 | 00110000 | 30 |
| 1 | 49 | 00110001 | 31 |
| 5 | 53 | 00110101 | 35 |
| 9 | 57 | 00111001 | 39 |
| : | 58 | 00111010 | 3A |
| ? | 63 | 00111111 | 3F |
| @ | 64 | 01000000 | 40 |
| A | 65 | 01000001 | 41 |
| B | 66 | 01000010 | 42 |
| M | 77 | 01001101 | 4D |
| Z | 90 | 01011010 | 5A |
| a | 97 | 01100001 | 61 |
| b | 98 | 01100010 | 62 |
| m | 109 | 01101101 | 6D |
| z | 122 | 01111010 | 7A |
์๋ฅผ ๋ค์ด, ๋๋ฌธ์ A๋ ์ญ์ง ์ฝ๋ 65๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด์ง์๋ก๋ 1000001์ด๊ณ , 8๋นํธ๋ก ์ฑ์ฐ๋ฉด 01000001์ด ๋ฉ๋๋ค. ๋จ์ผ ๋ฌธ์๋ก์ "Hi"๋ผ๋ ๋จ์ด๋ 01001000 01101001์ผ๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
ํต์ฌ ์ฉ์ด ์ค๋ช
- ๋นํธ
- ๋์งํธ ๋ฐ์ดํฐ์ ๊ฐ์ฅ ์์ ๋จ์๋ก, 0 ๋๋ 1์ ๋จ์ผ ๊ฐ์ ๋ณด์ ํฉ๋๋ค(์ด์ง ์๋ฆฌ).
- ๋ฐ์ดํธ
- 8๋นํธ์ ๊ทธ๋ฃน์ ๋๋ค. ๋ฐ์ดํธ๋ 256๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ฐ(\(2^8 = 256\))์ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ์ด๋ ํ์ฅ ASCII ๋ฌธ์ 1๊ฐ๋ฅผ ์ ์ฅํ๊ธฐ์ ์ ํํ ์ถฉ๋ถํฉ๋๋ค.
- ASCII
- ๋ฏธ๊ตญ ์ ๋ณด ๊ตํ ํ์ค ์ฝ๋(American Standard Code for Information Interchange) โ 128๊ฐ ๋ฌธ์(์ฝ๋ 0โ127), ๋ฌธ์, ์ซ์, ๊ตฌ๋์ ๋ฐ ์ ์ด ์ฝ๋๋ฅผ ํฌํจํ์ฌ ๋ฌธ์๋ฅผ ์ซ์์ ๋งคํํ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ ํ์ค์ ๋๋ค.
- ์ ๋์ฝ๋
- ASCII๋ฅผ ํจ์ฌ ๋ฐ์ด๋์ด ๊ฑฐ์ ๋ชจ๋ ์ฐ๊ธฐ ์ฒด๊ณ, ๊ธฐํธ ๋ฐ ์ด๋ชจ์ง๋ฅผ ํฌํจํ๋ ๋ฒ์ฉ ๋ฌธ์ ํ์ค์ ๋๋ค. ์ฒ์ 128๊ฐ์ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ๋ ASCII์ ๋์ผํฉ๋๋ค.
- ์ฝ๋ ํฌ์ธํธ
- ๋ฌธ์ ์งํฉ ๋ด์์ ๋ฌธ์์ ํ ๋น๋ ์ซ์ ๊ฐ์ ๋๋ค. ๋ฌธ์ "A"์ ๊ฒฝ์ฐ, ์ฝ๋ ํฌ์ธํธ๋ ASCII์ ์ ๋์ฝ๋ ๋ชจ๋์์ 65์ ๋๋ค.
- ์ด์ง์
- 0๊ณผ 1๋ง ์ฌ์ฉํ๋ 2์ง๋ฒ์ ๋๋ค. ๊ฐ ์๋ฆฌ๋ 2์ ๊ฑฐ๋ญ์ ๊ณฑ(1, 2, 4, 8, โฆ)์ ๋ํ๋ ๋๋ค.
- ์ญ์ง์
- ์ผ์์ ์ธ ๊ณ์ฐ์ ์ฌ์ฉ๋๋ 10์ง๋ฒ์ผ๋ก, ์ซ์ 0โ9๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ฐ ์๋ฆฌ๋ 10์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋ํ๋ ๋๋ค.
- 16์ง์
- 16์ง๋ฒ์ผ๋ก, ์ซ์ 0โ9์ ๋ฌธ์ AโF๋ฅผ ์ฌ์ฉํฉ๋๋ค. 1๊ฐ์ 16์ง์ ์๋ฆฌ๋ ์ ํํ 4๋นํธ๋ฅผ ๋ํ๋ด๋ฏ๋ก, 2๊ฐ์ 16์ง์ ์๋ฆฌ๋ 1๋ฐ์ดํธ๋ฅผ ๋ํ๋ ๋๋ค.
- ์ฑ์ฐ๊ธฐ / ์ผ์ชฝ ์ฑ์ฐ๊ธฐ
- ์ด์ง ๊ฐ์ ์์ ์ ํ 0์ ์ถ๊ฐํ์ฌ ๋ชจ๋ ๋ฌธ์๊ฐ ๊ท ์ผํ ๋๋น๋ฅผ ์ฐจ์งํ๋๋ก ํฉ๋๋ค. ASCII ๋ฐ์ดํธ๋ 8๋นํธ๋ก ์ผ์ชฝ ์ฑ์ฐ๊ธฐ๋ฉ๋๋ค โ ์๋ฅผ ๋ค์ด, ์ฝ๋ 65(์ด์ง์ 1000001)๋ 01000001์ด ๋ฉ๋๋ค.
์ด์ง์, ์ญ์ง์ ๋ฐ 16์ง์ ๋ณํ ํ
์๋ ํ๋ ๋์ผํ ๊ฐ์ด ์ญ์ง์(10์ง๋ฒ), ์ด์ง์(2์ง๋ฒ) ๋ฐ 16์ง์(16์ง๋ฒ)์์ ์ด๋ป๊ฒ ๋ํ๋๋์ง ๋ณด์ฌ์ค๋๋ค. 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ด ์ถ๊ฐ๋ ๋๋ง๋ค ์ด์ง ์๋ฆฌ๊ฐ ํ๋ ๋ ์ถ๊ฐ๋๋ ๋ฐฉ์๊ณผ 4๊ฐ์ ์ด์ง ๋นํธ๊ฐ ์ด๋ป๊ฒ ํ๋์ 16์ง์ ์๋ฆฌ์ ๊น๋ํ๊ฒ ๋งคํ๋๋์ง ์ฃผ๋ชฉํ์ธ์.
| ์ญ์ง์ | ์ด์ง์(8๋นํธ) | 16์ง์ |
|---|---|---|
| 0 | 00000000 | 00 |
| 1 | 00000001 | 01 |
| 2 | 00000010 | 02 |
| 3 | 00000011 | 03 |
| 4 | 00000100 | 04 |
| 5 | 00000101 | 05 |
| 6 | 00000110 | 06 |
| 7 | 00000111 | 07 |
| 8 | 00001000 | 08 |
| 9 | 00001001 | 09 |
| 10 | 00001010 | 0A |
| 11 | 00001011 | 0B |
| 12 | 00001100 | 0C |
| 13 | 00001101 | 0D |
| 14 | 00001110 | 0E |
| 15 | 00001111 | 0F |
| 16 | 00010000 | 10 |
| 32 | 00100000 | 20 |
| 64 | 01000000 | 40 |
| 128 | 10000000 | 80 |
| 255 | 11111111 | FF |
ํ์ธ์ผ๋ก, ์ญ์ง์ 255๋ ๋จ์ผ ๋ฐ์ดํธ๊ฐ ๋ณด์ ํ ์ ์๋ ์ต๋๊ฐ์ ๋๋ค. 16์ง์ ํ์์ FF์ด๊ณ ์ด์ง ํ์์ 8๋นํธ ๋ชจ๋๊ฐ 1๋ก ์ค์ ๋์ด ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ญ์ง์ 64๋ ์ด์ง์ 1000000์ผ๋ก ๋ณํ๋๋ฉฐ, ์ด๋ 01000000์ผ๋ก ์ฑ์์ง๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์๋ฌธ์ด ์๋ ๋ฌธ์๋ ์ฒ๋ฆฌํ ์ ์๋์? ํ์ค ASCII๋ ์ฝ๋ ํฌ์ธํธ 0~127์ ๋ค๋ฃน๋๋ค. 127์ ๋๋ ๋ฌธ์(์ ์ผํธ ๋ถํธ, ์ด๋ชจ์ง ๋ฑ)๋ ํด๋น ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์ด ๊ฐ์ 8๋นํธ๋ฅผ ์ด๊ณผํ ์ ์์ด ํ์ค ASCII์ ๋ง์ง ์์ ์ ์์ต๋๋ค.
์ ๋ฌธ์๋น 8๋นํธ์ธ๊ฐ์? 1๋ฐ์ดํธ๋ 8๋นํธ์ด๋ฉฐ, ASCII๋ ์ ํต์ ์ผ๋ก 1๋ฐ์ดํธ ์์ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ 8๋นํธ ๋จ์ ๋ฌถ์์ด ์ผ๋ฐ์ ์ธ ํํ ๋ฐฉ์์ ๋๋ค.
2์ง์๋ฅผ ๋ค์ ํ ์คํธ๋ก ๋ณํํ ์ ์๋์? ์ด ๋๊ตฌ๋ ํ ์คํธ๋ฅผ 2์ง์๋ก ๋ณํํฉ๋๋ค. ๋ฐ๋๋ก ๋๋๋ฆฌ๋ ค๋ฉด 2์ง์๋ฅผ 8๋นํธ ๋จ์๋ก ๋๋ ๋ค ๊ฐ ๊ฐ์ ๋ค์ ASCII ๋ฌธ์๋ก ๋์์ํค๋ฉด ๋ฉ๋๋ค.