오늘 끝나면
이진수와 문자 표현
- ✓비트가 0 또는 1 한 자리이고 8비트가 1바이트임을 설명할 수 있음
- ✓8비트 이진수를 자리값의 합으로 십진수로 바꿀 수 있음
- ✓글자·명령이 약속된 비트 패턴으로 저장되고, 해석이 뜻을 정함을 말할 수 있음
실습 미션
오른쪽 인코더에서 숫자 65를 만들고, 글자 탭에서 'A'가 같은 비트(01000001)임을 직접 확인해 보셈. 그다음 'a'를 눌러 비트 한 자리만 바뀌는지도 보셈.
성공 조건
- □01000001을 만들어 값이 65로 나오게 함
- □글자 'A'의 ASCII 코드가 65, 'a'가 97임을 비트로 확인함
- □비트 하나를 토글하면 값이 그 자리값만큼 바뀜을 봄
0과 1 · 자리값 · ASCII
이진수와 문자 표현
컴퓨터는 0과 1만 앎. 숫자도 글자도 명령도 전부 비트 패턴으로 번역해야 읽힘. 이진이 모든 데이터의 공통 언어임.
왜 0과 1만 쓰나 — 스위치의 두 상태
컴퓨터 속은 결국 수많은 스위치임. 켜짐 아니면 꺼짐, 딱 두 상태뿐임.
전압이 높으면 1, 낮으면 0으로 약속함. 중간을 안 쓰니 잡음에 덜 흔들리고 틀릴 일이 적음.
10단계 전압을 구분하려 애쓰는 것보다, 있다·없다 둘만 구분하는 게 훨씬 안 망가짐. 그래서 기계는 두 기호만 다룸 / 0과 1.
이 한 자리를 비트라 부름. 비트 하나는 0 또는 1 하나임. 비트 8개를 한 묶음으로 다루면 그게 1바이트임.
켜진 스위치 2개 · 비트 8자리 = 1바이트
이진수로 숫자를 표현한다 — 자리값
우리가 쓰는 십진수는 자리마다 10의 거듭제곱임. 124는 100+20+4로 쪼개짐.
이진수는 똑같은 원리인데 밑이 2임. 오른쪽부터 1, 2, 4, 8, 16, 32, 64, 128 — 자리마다 2의 거듭제곱임.
그 자리에 1이 켜져 있으면 자리값을 더하고, 0이면 건너뜀. 켜진 자리값을 다 더하면 그게 숫자임.
예로 8비트 01000001은 64+1 = 65임. 비트 8개면 0부터 255까지, 256가지 숫자를 적을 수 있음.
64 + 1 = 65
8비트로 0부터 255까지 · 256가지
글자도 비트다 — ASCII라는 약속표
글자는 모양이라 그냥은 못 셈. 그래서 글자마다 번호를 미리 약속해 둠.
그 약속표가 ASCII임. 1963년 미국에서 표준으로 만듦. A는 65, B는 66, a는 97, 숫자 글자 '0'은 48임.
글자를 이 정해진 비트 패턴으로 바꾸는 일이 인코딩임. 'A'를 적으면 메모리엔 01000001로 저장됨.
대문자와 소문자는 딱 32(=100000) 차이라 비트 한 자리만 다름. 이렇게 규칙이 있어 정렬도 변환도 계산으로 처리됨.
테두리 친 32 자리 하나만 다름 · 나머지 7비트는 똑같음
같은 비트, 약속이 뜻을 정한다 — 인코딩
비트 패턴 자체엔 뜻이 없음. 01000001은 그냥 켜짐·꺼짐의 줄일 뿐임.
숫자로 읽기로 약속하면 65, 글자로 읽기로 약속하면 'A', CPU 명령으로 읽기로 약속하면 어떤 동작임.
명령도 결국 비트임. 더해라·옮겨라 같은 연산이 정해진 비트 코드로 적혀 있어 CPU가 그걸 읽고 실행함.
그래서 같은 메모리 한 칸이 데이터도 되고 명령도 됨. 비트는 공통 언어고, 해석(약속)이 그 뜻을 정함.
직접 이진 인코더 해보기
오른쪽 인코더에서 숫자와 글자를 직접 8비트로 바꿔볼 것.
숫자 탭에선 슬라이더를 움직이거나 비트를 직접 토글하며 자리값의 합이 값이 됨을 확인하면 됨.
글자 탭에선 글자 하나의 ASCII 비트가 뜸. 같은 8비트가 숫자로도 글자로도 동시에 읽히는 걸 눈으로 확인하셈.
외우지 말고 움직여 볼 것. 비트가 곧 모든 데이터의 공통 언어임이 손에 잡힘.
64 + 1 = 65
비트는 그저 0/1 패턴임. 숫자로 볼지 글자로 볼지는 약속이 정함.