티스토리 뷰
https://www.youtube.com/watch?v=peg8c6Gn-zc&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=6
초심으로 돌아가서 다시 정리하는 개념입니다.
이미 알고 있어 스킵하는 부분도 있으니, 직접 보시는 걸 추천드립니다.
정보 단위
비트: 0과 1을 표현하는 가장 작은 정보 단위
n비트로 2^n의 정보 표현 가능
보통 비트보다 더 큰 단위를 사용한다.
1000 바이트=1킬로바이트(kB)
요즘에는 1024개씩 묶으면 kiB로 구분해서 쓰는 추세이다.
(옛날에 배울 떄는 무조건 1024였는데..)
워드
CPU가 한 번에 처리할 수 있는 정보의 크기 단위
하프, 풀, 더블이 있다.
이진법으로 음수를 표현하는 법
0과 1로 음수 표현하기
2의 보수법을 쓴다.
원래 정의 : 어떤 수를 그보다 큰 2^n에서 뺀 값
혹은, 모든 0과 1을 뒤집고 1을 더한 값
구분의 경우에는 CPU에서 플래그로 구분한다.
십육진법을 쓰는 이유
십육진법은 이진법으로 바꾸기 쉽다.
십육진법의 각 항목을 이진법으로 바꾸고 결합하면 끝.
마찬가지로 이진법도 4개씩 구분해서 십육진법으로 바꿔주면 된다.
십육진법을 코드에 직접 써넣는 사례도 많다.
0과 1로 문자를 표현하는 방법
문자 집합(character set) - 컴퓨터가 이해할 수 있는 문자의 모음
인코딩 (encoding) - 0과 1로 변환하는 과정(원-핫 인코딩으로 익숙하다)
디코딩 (decoding) - 0과 1로 이루어진 코드를 해석하는 과정
아스키 코드(ASCII)
초창기 문자 집합 중 하나
7비트로 하나의 문자 표현 - 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit)다.
2^7=128이므로 0~127개의 문자 표현 가능
A는 65~a는 97
알파벳은 26개이다.
아스키코드의 문제
한글은 불가.
128개보다 많은 문자 표현 불가
8비트도 여전히 부족
한글 인코딩 : 완성형 vs 조합형 인코딩
한글을 위한 인코딩이 따로 필요하다.
완성형은 단어 하나 하나에 코드를 부여
조합형은 자음과 모음에 코드를 부여
EUC-KR : 완성형 인코딩. 글자 하나 하나에 2바이트 크기의 코드 부여
2바이트 == 16비트 == 4자리 16진수로 표현
b0c5 = 거, b0c1 = 가 이런 식
2300여개의 한글 표현 가능
꿹깛 이런 건 표현 불가능
언어별 인코딩을 하게 되면 다국어를 지원하는 프로그램을 개발 할 때는 문제가 생긴다.
그래서 생긴 게 유니코드 utf-8
유니코드
통일된 문자 집합
한글, 영어, 화살표 등등
유니코드 인코딩 방식 - uft-8,utf-16,utf-32 등
16진수를 고유한 값이 있다(코드 포인트)
코드 포인트를 컴퓨터가 어떻게 0과 1로 변환하는지에 따라서 다르게 인식한다.
utf-8
가변 길이 인코딩 결과가 1바이트~4바이트
첫 코드 포인트가 결정되고, 마지막 코드 포인트의 범위가 다르면 가변하여 1바이트~4바이트를 결정한다.
0000 / 007F - 1바이트
0000 / FFFF - 3바이트
글자가 깨지는 경우 - 유니코드에 빠지지 않았는지, 인코딩이 잘 안되었는지 의심할 수 있다.