λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Computer Science

μ»΄ν“¨ν„°μ˜ 언어와 μ‚¬λžŒμ˜ μ–Έμ–΄

by Limm_jk 2021. 7. 23.
😊 λ³Έ 글은 ν•œ ꢌ으둜 μ½λŠ” 컴퓨터 ꡬ쑰 책을 읽고 μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

 

μš°λ¦¬κ°€ μƒκ°ν•˜λŠ” μ–Έμ–΄λž€ λ¬΄μ—‡μΌκΉŒ?

- μ–Έμ–΄λŠ” μƒκ°μ΄λΌλŠ” ν˜•μ²΄κ°€ μ—†λŠ” κ°œλ…μ— λͺ¨λ‘κ°€ 이해할 수 μžˆλŠ” μƒˆλ‘œμš΄ ν˜•μ²΄λ₯Ό λΆ€μ—¬ν•˜λ©°, 이λ₯Ό κ³΅μœ ν•  수 μžˆλ‹€.
- κ³΅μœ ν•˜λŠ” μ–Έμ–΄λΌλŠ” κ°œλ…μ„ ν†΅ν•΄μ„œ λ³΅μž‘ν•œ 생각을 μ‰½κ²Œ 전달할 수 μžˆλ‹€.
- μ‚¬νšŒκ°€ κ³΅μœ ν•˜λŠ” 약속
- ???

λŒ€μΆ© κ΅­μ–΄μ‹œκ°„μ— 배운 μ–Έμ–΄λŠ” 이런 λŠλ‚Œμ΄μ—ˆλ˜ 것 κ°™λ‹€.

μ–Έμ–΄λŠ” μœ„μ— λ§ν•œ 것과 같이 κΈ°ν˜Έλ“€μ˜ 집합을 ν†΅ν•΄μ„œ μ†Œν†΅μ„ ν•  수 있게 ν•΄μ€€λ‹€.

 

ν•˜μ§€λ§Œ, '두ㅑㅂ젣'κ³Ό 같은 κΈ°ν˜Έλ“€μ˜ 집합이 μ–Έμ–΄μ΄μ§€λŠ” μ•Šλ‹€.

μ–Έμ–΄λŠ” κΈ°ν˜Έλ“€μ˜ μ§‘ν•©μ΄κΈ°λ§Œ ν•΄μ„œλŠ” μ•ˆλ˜λ©° μ‚¬μš©ν•˜λŠ” λ‹Ήμ‚¬μžλ“€μ΄ 곡감할 수 μžˆλŠ” λ¬Έλ§₯을 λ‘μ–΄μ„œ ν•˜λ‚˜μ˜ 기호의 집합에 같은 의미λ₯Ό 두어야 ν•œλ‹€.

μœ„μ— 적은 '두ㅑㅂ젣'κ°€ 예쁘게 생겼닀고 ν•΄μ„œ λ‚˜ 혼자 '의자'λ₯Ό '두ㅑㅂ젣'라고 λΆ€λ₯Ό μˆ˜λŠ” μ—†λ‹€.

 

ν•œκΈ€λ‘œ μ†Œν†΅ν•˜λŠ” μš°λ¦¬μ™€λŠ” λ‹€λ₯΄κ²Œ, μ»΄ν“¨ν„°λŠ” λΉ„νŠΈλΌλŠ” μ΄μ§„λ²•μ˜ 수둜 μ•Œμ•„λ“£κ³ , λŒ€λ‹΅μ„ ν•œλ‹€.

 

λŒ€μ²΄ μ»΄ν“¨ν„°λŠ” μ–΄λ–»κ²Œ μš°λ¦¬λŠ” μ•Œμ•„λ“€μ„ 수 μ—†λŠ” 0κ³Ό 1(λΉ„νŠΈ)둜 μ‚¬λžŒκ³Ό μ†Œν†΅μ„ ν•  수 μžˆλŠ” 지λ₯Ό 이번 κΈ€μ—μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² λ‹€.

으😠 이진법 멈좰!

 

μˆ«μžλŠ” μ–΄λ–»κ²Œ 적을 수 μžˆμ„κΉŒ?

μœ„μ—μ„œ μ΄μ•ΌκΈ°ν•œ κ²ƒμ²˜λŸΌ μ»΄ν“¨ν„°λŠ” 0κ³Ό 1만 받아듀일 수 μžˆλ‹€.

λ˜ν•œ, μš°λ¦¬λŠ” μ΄μ§„μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€λŠ” 힌트λ₯Ό μ–»μ—ˆμœΌλ―€λ‘œ μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” 10μ§„μˆ˜λ₯Ό 2μ§„μˆ˜λ‘œ λ°”κΎΈμ–΄ μ λŠ”λ‹€λ©΄ μ–‘μˆ˜λŠ” ν‘œν˜„μ΄ κ°€λŠ₯ν•  것 κ°™λ‹€.

 

κ·Έλ ‡λ‹€λ©΄ 0κ³Ό 1μ‚¬μ΄μ˜ μž‘μ€ μˆ˜λ“€, 그리고 μŒμˆ˜λŠ” μ–΄λ–»κ²Œ ν‘œν˜„ν•  수 μžˆμ„κΉŒ?

 

0κ³Ό 1μ΄λΌλŠ” μ œν•œλœ μˆ˜λ“€λ‘œ 이듀을 ν‘œν˜„ν•  수 없을 κ²ƒλ§Œ κ°™λ‹€.

ν•˜μ§€λ§Œ, 이런 μˆ˜λ“€μ„ ν‘œν˜„ν•  수 μ—†μ—ˆλ‹€λ©΄ μ»΄ν“¨ν„°λŠ” 우리의 λ§Žμ€ 연산듀을 λŒ€μ²΄ν•΄μ£Όμ§€ λͺ»ν–ˆμ„ 것이닀.

κ·Έλ ‡λ‹€λ©΄ μ»΄ν“¨ν„°λŠ” 이런 λ³΅μž‘ν•œ 문제λ₯Ό μ–΄λ–»κ²Œ ν•΄κ²°ν•˜κ³  μžˆλŠ” 지 μ•Œμ•„λ³΄μž.

 

음수의 ν‘œν˜„

λ™μ‹¬νŒŒκ΄΄μ˜ ν˜„μž₯ / 좜처 : μ—λΈŒλ¦¬νƒ€μž„

μ΄μ œλŠ” κ³΅κ³΅μ—°ν•˜κ²Œ μ•Œλ €μ Έλ²„λ¦° 21μ–΅μ˜ 진싀πŸ₯²

μœ„μ˜ μ˜ˆμ‹œλ‘œ ν‘œν˜„μ„ ν•˜κΈ° μœ„ν•˜μ—¬ 32λΉ„νŠΈλ₯Ό μž‘λŠ”λ‹€κ³  κ°€μ •ν•΄λ³΄μž.

 

κ·Έλ ‡λ‹€λ©΄ 0κ³Ό 1이 32개... 2μ§„μˆ˜λ‘œ ν•œλ‹€λ©΄ μ΅œλŒ€ 값이 42μ–΅μ―€..? λ­”κ°€ μ΄μƒν•˜λ‹€.

 

μš°λ¦¬κ°€ μ•„λŠ” 2μ§„μˆ˜λ‘œλŠ” λΆ„λͺ… 32λΉ„νŠΈλΌλ©΄ 2^32 = μ•½ 42얡을 ν‘œν˜„ν•  수 μžˆμ–΄μ•Όν•˜λŠ”λ°,

동물농μž₯의 ν¬μΈνŠΈλŠ” μ™œ 21얡밖에 μ•ˆλ˜κ²Œ ν•΄λ‘μ—ˆμ„κΉŒ?

21얡밖에 μ•ˆλœλ‹€ -> 31λΉ„νŠΈλ§Œ μ‚¬μš©ν•œλ‹€ -> 1λΉ„νŠΈλŠ” λ†€κ³ μžˆλ‚˜??

 

여기에 음수 ν‘œν˜„μ˜ 비밀이 μˆ¨μ–΄μžˆλ‹€. μ΅œμƒμœ„ 1λΉ„νŠΈλ₯Ό λΆ€ν˜Έλ₯Ό μ˜λ―Έν•˜λŠ” λΉ„νŠΈλ‘œ μ‚¬μš©ν•˜λŠ” 것이닀.

κ·Έλž˜μ„œ λΆ€ν˜Έκ°€ μžˆλŠ” 수의 μ΅œμƒμœ„ λΉ„νŠΈκ°€ 0이라면 μ–‘μˆ˜, 1이라면 음수 이런 μ‹μœΌλ‘œ 음수λ₯Ό ν‘œν˜„ν•˜κ²Œ λœλ‹€.

κ·Έλž˜μ„œ λΆ€ν˜Έκ°€ μžˆλŠ” 32λΉ„νŠΈλŠ” 0 ~ 4294967296이 μ•„λ‹Œ -2147483648 ~ 2147483647κΉŒμ§€μ˜ 수λ₯Ό λ‹€λ£° 수 μžˆλŠ” 것이닀.

 

κ·Έλ ‡λ‹€λ©΄ κ·Έλƒ₯ μ΅œμƒμœ„ λΉ„νŠΈμ— 1을 λΆ™μ—¬μ£ΌκΈ°λ§Œ ν•˜λ©΄ μŒμˆ˜κ°€ λ˜λŠ” κ²ƒμΌκΉŒ?

그렇지 μ•Šλ‹€. κ·Έλ ‡κ²Œ μ‚¬μš©ν•œλ‹€λ©΄ μ—°μ‚°ν•˜κΈ°λ„ λ³΅μž‘ν•˜λ©° 그둜 인해 λΉ„μš©μ˜ 증가가 μΌμ–΄λ‚œλ‹€.

 

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•˜μ—¬ 보수의 κ°œλ…μ„ μ μš©ν•˜μ—¬ μ•„λž˜μ™€ 같이 ν‘œν˜„ν•˜μ˜€λ‹€.

두가지 방법이 μžˆλŠ”λ°, 1의 λ³΄μˆ˜λŠ” 0을 λ‘κ°€μ§€λ‘œ ν‘œν˜„ν•˜λŠ” λ“± μ„±λŠ₯λ¬Έμ œκ°€ μ‘΄μž¬ν•˜μ—¬ 2의 λ³΄μˆ˜κ°€ 많이 쓰인닀고 ν•œλ‹€.

 

λ³΄μˆ˜μ— 따라 계산법이 μ™„μ „νžˆ λ‹¬λΌμ§€λ―€λ‘œ μ•Œκ³ μžˆλŠ” 것이 μ’‹κ² λ‹€.

 

 

μ‹€μˆ˜μ˜ ν‘œν˜„

μš°λ¦¬λŠ” μ΅œμƒμœ„ 1λΉ„νŠΈλ₯Ό λΆ€ν˜Έλ‘œ λ‘μ–΄μ„œ 음수처리λ₯Ό ν•΄μ£Όμ—ˆλ‹€.

μ΄λŠ” 같은 μ •μˆ˜μ΄κΈ° λ•Œλ¬Έμ— 보닀 μ‰¬μš΄ λ°©ν–₯으둜 μ²˜λ¦¬ν•  수 μžˆμ—ˆμœΌλ‚˜ 보닀 μ–΄λ €μš΄ μΉœκ΅¬κ°€ μ‘΄μž¬ν•œλ‹€.

 

μ •μˆ˜κ°€ μ•„λ‹Œ μ‹€μˆ˜λ“€μ΄λ‹€.

0.5와 같은 μ •μˆ˜κ°€ μ•„λ‹Œ μœ λ¦¬μˆ˜λΆ€ν„° 0.3333...κ³Ό 같은 λ¬΄λ¦¬μˆ˜κΉŒμ§€

μ΄λ ‡κ²Œ 생각할 수 μžˆλ‹€. 'κ·Έλƒ₯ 절반 λ‚˜λˆ„μ–΄μ„œ μ•žμ— μ •μˆ˜λΆ€, 뒀에 μ†Œμˆ˜λΆ€ ν•˜λ©΄ μ•ˆλ˜λ‚˜μš”?!'

 

κ·Έλ ‡λ‹€λ©΄ μ˜ˆμ‹œλ‘œ λ¬Όλ¦¬ν•™μ—μ„œ μ‚¬μš©λ˜λŠ” μƒμˆ˜λ“€μ„ μ œμ‹œν•΄λ³΄κ² λ‹€.

- ν”Œλž‘ν¬ μƒμˆ˜

- μ•„λ³΄κ°€λ“œλ‘œ 수

μœ„μ™€ 같이 μ—„μ²­λ‚œ 차이λ₯Ό λ³΄μ΄λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

절반으둜 λ‚˜λˆ„μ–΄μ„œ 이 두 수λ₯Ό ν‘œμ‹œν•˜λ €λ©΄ λŒ€λ½ 200λΉ„νŠΈλŠ” 할당을 ν•΄μ€˜μ•Όλ§Œ ν•  것이닀.

μœ„μ—μ„œ 동물농μž₯도 32λΉ„νŠΈλ‘œ ν‘œν˜„μ„ ν•˜λŠ”λ°, λ„ˆλ¬΄λ‚˜ λΉ„νš¨μœ¨μ μ΄λΌ μƒκ°λœλ‹€.

이런 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ œμ‹œλœ 방법이 λΆ€λ™μ†Œμˆ˜μ μ΄λ‹€.

 

λΆ€λ™μ†Œμˆ˜μ  λ˜ν•œ μ—¬λŸ¬κ°œμ˜ 방식이 μ œμ‹œλ˜μ—ˆλŠ”λ°, λŒ€ν‘œμ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 방식은 IEEE 754 ν‘œμ€€μ΄λ‹€.

이 방식은 정밀도λ₯Ό μ΅œλŒ€ν•œ 높이기 μœ„ν•˜μ—¬ μ •κ·œν™”λΌλŠ” νŠΈλ¦­μ„ μ‚¬μš©ν–ˆλ‹€.

μ •κ·œν™”λŠ” κ°€μˆ˜λ₯Ό μ‘°μ •ν•˜μ—¬ 맨 μ•žμ— 0이 없도둝 λ§Œλ“€μ–΄μ€€λ‹€.

이런 μ‹μœΌλ‘œ μ†Œμˆ˜μ μ„ λ‹Ήκ²¨μ„œ 1λ§Œμ„ 남기고, 맨 μ•žμ΄ 1μ΄λΌλŠ” 것을 μ•Œκ³  μžˆμœΌλ―€λ‘œ μƒλž΅ν•˜λŠ” 트릭으둜 λΉ„νŠΈλ₯Ό μ•„λ‚„ 수 μžˆμ—ˆλ‹€.

 

λ˜ν•œ μ•„λž˜μ™€ 같이 κ°€μˆ˜λΆ€ / μ§€μˆ˜λΆ€λ₯Ό λ‚˜λˆ„μ–΄ 효율적으둜 ν‘œμ‹œν•  수 μžˆλ„λ‘ ν•˜μ˜€λ‹€.

이런 μ‹μœΌλ‘œ λ‚˜λˆ„μ–΄ κΈ°λ³Έ 정밀도 (32λΉ„νŠΈ)에선

μ •λ„μ˜ λ²”μœ„λ₯Ό ν‘œν˜„ν•  수 있으며,

 

2λ°° μ •λ°€λ„μ˜ λΆ€λ™μ†Œμˆ˜μ μ—μ„œλŠ”

의 λ²”μœ„λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

 

μ΄λŠ” μœ„μ—μ„œ λ§ν–ˆλ˜ ν”Œλž‘ν¬ μƒμˆ˜μ™€ μ•„λ³΄κ°€λ“œλ‘œ μˆ˜κ°€ κΈ°λ³Έ 정밀도(16λΉ„νŠΈ)에 λ“€μ–΄κ°€λŠ” ꡉμž₯ν•œ νš¨μœ¨μ„ 보여쀀닀.

μš°λ¦¬λŠ” λΆ€λ™μ†Œμˆ˜μ μ„ μ΄μš©ν•˜μ—¬ 합리적인 λ²”μœ„ λ‚΄μ—μ„œ λ§Žμ€ μ†Œμˆ˜λ₯Ό μ—°μ‚°ν•  수 있게 λ˜μ—ˆλ‹€.

ν…μŠ€νŠΈμ˜ ν‘œν˜„

μœ„μ—μ„œ μ΄μ•ΌκΈ°ν–ˆλ˜ κ²ƒμ²˜λŸΌ μ»΄ν“¨ν„°λŠ” λΉ„νŠΈλ₯Ό μ΄μš©ν•˜μ—¬ μ†Œν†΅μ„ ν•˜λ©°, μ—¬λŸ¬κ°€μ§€ νŠΈλ¦­μ„ μ΄μš©ν•˜μ—¬ μ‹€μˆ˜λ“€μ„ ν‘œν˜„ν•  수 μžˆμŒμ„ μ•Œμ•˜λ‹€.

 

ν•˜μ§€λ§Œ 아직 μ‚¬λžŒκ³Ό μ–΄λ–»κ²Œ μ†Œν†΅ν•˜λŠ” μ§€λŠ” μ’€ 의문이 λ“ λ‹€.

μ‚¬λžŒμ€ μžμ—°μ–΄λ‘œ μ†Œν†΅ν•˜λŠ”λ°, μ»΄ν“¨ν„°λŠ” μ‹€μˆ˜μ—μ„œ λ†€κ³ μžˆμ§€ μ•Šμ€κ°€.

 

이제 μ–΄λ–»κ²Œ μ»΄ν“¨ν„°μ—κ²Œ μžμ—°μ–΄λ₯Ό μ•Œλ €μ€„ 수 μžˆμ—ˆλŠ”κ°€λ₯Ό μ•Œμ•„λ³΄μž.

 

μ•„μŠ€ν‚€ μ½”λ“œ

수λ₯Ό ν‘œν˜„ν–ˆμ„ λ•Œμ™€ 같이 ν…μŠ€νŠΈλ₯Ό ν‘œν˜„ν•˜λŠ” 것에도 λ‹€μ–‘ν•œ 아이디어가 κ²½μŸν•˜μ˜€λ‹€.

κ·Έ 쀑 μŠΉλ¦¬ν•œ 것이 정보 κ΅ν™˜μ„ μœ„ν•œ λ―Έκ΅­ ν‘œμ€€ μ½”λ“œ - ASCII (American Standard Code for Information Interchange) 이닀.

 

ASCII(μ•„μŠ€ν‚€)κ°€ ν…μŠ€νŠΈλ₯Ό ν‘œν˜„ν•˜λŠ” 방법은 λͺ¨λ“  κΈ°ν˜Έμ— λŒ€ν•˜μ—¬ 7λΉ„νŠΈμ˜ 값을 ν• λ‹Ήν•˜μ—¬ ν…μŠ€νŠΈμΌ 경우 이 값듀을 ν•΄μ„ν•˜μ—¬ κ²°μ •ν•˜μ˜€λ‹€.

μ•„μŠ€ν‚€ μ½”λ“œ ν…Œμ΄λΈ”. 7λΉ„νŠΈμ˜ μ΅œλŒ€κ°’μΈ 127κΉŒμ§€ μ“°μ—¬μžˆλ‹€.

μΉœμˆ™ν•œ μ•ŒνŒŒλ²³μ΄λ‚˜ κΈ°ν˜Έμ— λΉ„ν•˜μ—¬ 1번의 SOHλ‚˜ 2번의 STX같은 것은 λ‹€λ₯Έ λ¬Έμžμ— λΉ„ν•˜μ—¬ μ’€ 이질적이라 λŠκ»΄μ§„λ‹€.

μ΄λŠ” μ œμ–΄λ¬ΈμžλΌκ³  λΆˆλ¦¬λŠ” μ½”λ“œλ‘œμ„œ 좜λ ₯ν•˜λŠ”λ° 쓰지 μ•Šκ³  μž₯치λ₯Ό μ œμ–΄ν•˜κΈ° μœ„ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

 

κ·Έλ ‡λ‹€λ©΄ ν•œκΈ€μ€ μ–΄λ–»κ²Œ μ“°κ³  있죠?

μœ„μ˜ μ•„μŠ€ν‚€ μ½”λ“œλŠ” μΆ©λΆ„νžˆ ν₯λ―Έλ‘œμš°λ‚˜ ν•˜λ‚˜ 의문이 λ“œλŠ” 점이 μžˆλ‹€.

 

"μ˜μ–΄λ§Œ 있으면 λ‹€λ₯Έ μ–Έμ–΄λŠ” μ–΄λ–»κ²Œ μ“°κ³  μžˆλ‚˜μš”?"

 

μ΄λŠ” 초기 μ»΄ν“¨ν„°λŠ” λ―Έκ΅­μ‚° ν˜Ήμ€ μ˜κ΅­μ‚°μ΄μ—ˆκ³ , 비ꡐ적 κΈ΄ μ‹œκ°„ μ˜μ–΄λ§Œ λ˜μ–΄λ„ λ¬Έμ œκ°€ μ—†μ—ˆλ‹€.

ν•˜μ§€λ§Œ 이후 컴퓨터가 λŒ€μ€‘ν™” 됨에 λ”°λΌμ„œ λ‹€μ–‘ν•œ μ–Έμ–΄κ°€ 지원이 ν•„μš”ν•˜μ˜€κ³ , ν•œκ΅­μ–΄(KS C 5601 λ“±λ“±) 쀑ꡭ어 λ“±λ“±μ˜ ν‘œμ€€μ„ λ§Œλ“€μ–΄ μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆλ‹€. μ΄λ ‡κ²Œ 각기 λ‹€λ₯Έ ν‘œμ€€μ„ μ‚¬μš©ν•œ μ΄μœ λŠ” 각자 μ–Έμ–΄λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”λ°, ν•œ λΉ„νŠΈμ˜ Costκ°€ λ†’μ•˜κΈ° λ•Œλ¬Έμ— λ§Žμ€ λΉ„νŠΈλ₯Ό λ¬Έμžμ— ν• λ‹Ήν•˜κΈ°κ°€ μ–΄λ €μ› κΈ° λ•Œλ¬Έμ΄λ‹€.

 

ν•˜μ§€λ§Œ 기술이 λ°œμ „ν•˜λ©° λΉ„νŠΈμ˜ Cost의 κ°μ†Œλ¨μ— λ”°λΌμ„œ μœ λ‹ˆμ½”λ“œλΌλŠ” μƒˆλ‘œμš΄ ν‘œμ€€μ΄ λ§Œλ“€μ–΄μ‘Œκ³ , 16λΉ„νŠΈμ˜ μ½”λ“œλ₯Ό λ¬Έμžμ— λΆ€μ—¬ν•˜μ—¬ 7λΉ„νŠΈλ₯Ό μ“°λ˜ 이전보닀 더 λ§Žμ€ 문자λ₯Ό ν‘œν˜„ν•  수 있게 ν•˜μ˜€λ‹€.

 

이후 μœ λ‹ˆμ½”λ“œλŠ” λ‹€μ–‘ν•œ λ¬Έμžλ“€μ„ μ§€μ›ν•˜μ—¬ 16λΉ„νŠΈλ‘œλ„ λΆ€μ‘±ν•˜κ²Œ λ˜μ—ˆκ³  ν˜„μž¬ 21λΉ„νŠΈμ˜ μœ λ‹ˆμ½”λ“œλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€κ³  ν•œλ‹€.

μ•„μ§κΉŒμ§€λŠ” 21λΉ„νŠΈμ˜ μœ λ‹ˆμ½”λ“œλŠ” λΆ€μ‘±ν•˜μ§€ μ•ŠμœΌλ‚˜, ν˜„μž¬ μ§€μ›λ˜μ§€ μ•ŠλŠ” κ³ λŒ€ λ¬Έμžλ‚˜ 😸 λŒ€μ‹  μ›ƒλŠ” 강아지 등을 λ§Œλ“€μ§€ μ•ŠμœΌλ¦¬λΌλŠ” 법이 μ—†μœΌλ―€λ‘œ μ–Έμ  κ°€λŠ” λΆ€μ‘±ν•΄μ§ˆ 수 있으리라 μƒκ°ν•œλ‹€.

 

μ΄λŸ¬ν•œ 21λΉ„νŠΈλ₯Ό μ±„μš°λ €λŠ” μœ λ‹ˆμ½”λ“œμ˜ μ°½λŒ€ν•œκ³„νšμ€ 링크에 μ†Œκ°œλ˜μ–΄ μžˆλ‹€.

 

인코딩

μ΄λ ‡κ²Œ 21λΉ„νŠΈκΉŒμ§€ λŠ˜μ–΄λ‚˜λ©΄μ„œ 문자λ₯Ό ν•˜λ‚˜ ν‘œν˜„ν•˜λŠ” 것에 λ“œλŠ” λΉ„μš©μ΄ 이전 ASCII의 7λΉ„νŠΈμ— λΉ„ν•˜μ—¬ 폭발적으둜 μ¦κ°€ν–ˆλ‹€.

과거에 λΉ„ν•˜μ—¬ 1λΉ„νŠΈμ— μ†Œλͺ¨λ˜λŠ” Costκ°€ ꡉμž₯히 μ €λ ΄ν•΄μ‘Œμ§€λ§Œ, κ·Έλ ‡λ‹€κ³  7λΉ„νŠΈλ‘œ ν‘œν˜„κ°€λŠ₯ν•œ λ¬Έμžμ— 21λΉ„νŠΈλ₯Ό 할당을 ν• λ§ŒνΌ μ €λ ΄ν•˜μ§€λŠ” μ•Šλ‹€. 그리고 기뢄도 λ‚˜μ˜λ‹€

 

κ·Έλž˜μ„œ μš°λ¦¬λŠ” 문자 μ½”λ“œμ— λ”°λΌμ„œ 각기 λ‹€λ₯Έ Encoding(인코딩)을 μ‚¬μš©ν•˜μ—¬ 이런 문제λ₯Ό ν•΄κ²°ν•˜λ € ν•œλ‹€.

μΈμ½”λ”©μ΄λž€ λ‹€λ₯Έ λΉ„νŠΈ νŒ¨ν„΄μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” λΉ„νŠΈ νŒ¨ν„΄μ„ μ˜λ―Έν•œλ‹€.

 

κ·Έλž˜μ„œ μΈμ½”λ”©κΉŒμ§€ μ μš©μ„ ν•œλ‹€λ©΄ λΉ„νŠΈ - 숫자 - 문자 - 숫자(문자)와 같은 νλ¦„μœΌλ‘œ 처리된 문자λ₯Ό 보고 μžˆλŠ” 것이닀.

 

또 여기에도 λ‹€μ–‘ν•œ 방법이 μ œμ‹œλ˜μ—ˆλŠ”λ°, λŒ€ν‘œμ μœΌλ‘œ μ‚¬μš©λ˜λŠ” UTF-8에 λŒ€ν•˜μ—¬ μ†Œκ°œν•΄λ³΄λ € ν•œλ‹€.

 

UTF-8

UTF-8은 μœ λ‹ˆμ½”λ“œ λ³€ν™˜ ν˜•μ‹ 8λΉ„νŠΈ (Unicode Transformation Format-8bit)λΌλŠ” 의미둜 λͺ¨λ“  문자λ₯Ό 8λΉ„νŠΈμ˜ λ©μ–΄λ¦¬λ‘œ λ¬Άμ–΄μ„œ ν‘œμ‹œν•˜κ²Œ λœλ‹€.

 

UTF-8의 λ³€ν™˜ κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™λ‹€.

좜처 : μœ„ν‚€ν”Όλ””μ•„

λ‹€μŒκ³Ό 같이 ASCII의 7λΉ„νŠΈλ‘œ ν‘œμ‹œλ˜λŠ” 뢀뢄은 7λΉ„νŠΈλ₯Ό ν• λ‹Ήν•˜κ³  μ΅œμƒλ‹¨μ˜ λΉ„νŠΈλ₯Ό 0으둜 ν‘œμ‹œν•΄μ„œ κ΅¬λΆ„ν•΄μ£ΌλŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

그리고 μ΄ν›„μ˜ κ·œμΉ™μ„ 보면 첫 λ°”μ΄νŠΈ(8λΉ„νŠΈ)μ—μ„œ μ‚¬μš©ν•  λ°”μ΄νŠΈ 덩어리 수만큼 1을 λΆ™μ—¬μ£Όκ³  0을 ν•˜λ‚˜ λΆ™μ—¬μ€€λ‹€.

ex) 3개의 덩어리 μ‚¬μš© -> 1110****

 

그리고 첫 λ°”μ΄νŠΈλŠ” μœ„μ˜ κ·œμΉ™μ„ λ§Œμ‘±μ‹œν‚¨ ν›„, 남은 λΉ„νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€.

 

그리고 μ΄μ–΄μ§€λŠ” λ°”μ΄νŠΈλ“€μ€ 첫 두 λΉ„νŠΈλ₯Ό 10으둜 μž‘μ„±ν•΄μ£Όκ³  λ‚˜λ¨Έμ§€ 6λΉ„νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€.

 

μœ„μ™€ 같은 λ‘œμ§μ„ μ‚¬μš©ν•œλ‹€λ©΄ 4개의 λ°”μ΄νŠΈλ₯Ό μ΄μš©ν•˜μ—¬ Unicodeκ°€ 가진 21λΉ„νŠΈλ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

 

어라? μ„Έκ°œ, λ„€κ°œμ˜ λ°”μ΄νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ 였히렀 λΉ„νš¨μœ¨μ μΈ 것 μ•„λ‹Œκ°€μš”?

λ§žλ‹€. μ €μž₯λ˜λŠ” λ¬Έμžμ—΄μ„ 찍어보면 μ•Œκ² μ§€λ§Œ ν•œκ΅­μ–΄λŠ” 3Byteλ₯Ό μ‚¬μš©ν•˜μ—¬ 였히렀 λ‚˜μœ μ„±λŠ₯을 λ‚΄κ³  μžˆλ‹€.

 

ν•˜μ§€λ§Œ ASCII λ¬Έμžμ—΄μ΄ 1λ°”μ΄νŠΈλ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€λŠ” 큰 μž₯점과 ν•˜μœ„ν˜Έν™˜μ„± λ“± λ‹€μ–‘ν•œ μž₯점으둜 μΈν•˜μ—¬ ν‘œμ€€μœΌλ‘œ 자리 μž‘μ•˜λ‹€κ³  λ³Ό 수 μžˆλ‹€.

 

정리

μš°λ¦¬λŠ” 0κ³Ό 1밖에 λͺ¨λ₯΄λŠ” 컴퓨터가 μ–΄λ–»κ²Œ μš°λ¦¬μ™€ μ†Œν†΅ν•˜λŠ” 지 μ•Œ 수 μžˆμ—ˆλ‹€.

 

λ‹€μ–‘ν•œ νŠΈλ¦­μ„ ν†΅ν•΄μ„œ 0κ³Ό 1둜 κ΄‘λ²”μœ„ν•œ μ‹€μˆ˜λ₯Ό λ‹€λ£° 수 μžˆμ—ˆμœΌλ©°, μ΄λŸ¬ν•œ λ²”μœ„κ°€ μžˆλŠ” μˆ˜μ— 문자λ₯Ό λΆ€μ—¬ν•˜μ—¬ μžμ—°μ–΄ ν˜Ήμ€ 기호λ₯Ό ν‘œν˜„ν•˜λŠ” 법도 μ•Œμ•„λ³΄μ•˜λ‹€. 그리고 이런 것듀을 보닀 효율적으둜 ν‘œν˜„ν•˜λŠ” 방법인 인코딩에 λŒ€ν•˜μ—¬λ„ μ•Œμ•„λ³΄μ•˜λ‹€.

 

λ§‰μ—°ν•˜κ²Œ λ‹€λ₯Έ 세계에 있던 컴퓨터와 쑰금 κ°€κΉŒμ›Œμ§„ λŠλ‚Œμ΄λ‹€. 

λ‹€μŒ κΈ€μ—μ„œλŠ” 컴퓨터가 μ™œ 0κ³Ό 1만 μ•Œμ•„λ“€μ„ 수 있게 λ§Œλ“€μ–΄μ‘ŒμœΌλ©° μ–΄λ– ν•œ 물리ꡬ쑰둜 μ΄λ£¨μ–΄μ ΈμžˆλŠ” 지 μ•Œμ•„λ³΄κ² λ‹€.

λŒ“κΈ€