스킬캠퍼스

오늘 끝나면

이진수와 문자 표현

  • 비트가 0 또는 1 한 자리이고 8비트가 1바이트임을 설명할 수 있다
  • 8비트 이진수를 자리값의 합으로 십진수로 바꿀 수 있다
  • 글자와 명령이 약속된 비트 패턴으로 저장되고, 해석이 뜻을 정한다는 것을 말할 수 있다

실습 미션

오른쪽 인코더에서 숫자 65를 만들고, 글자 탭에서 'A'가 같은 비트(01000001)임을 직접 확인한다. 그다음 'a'를 눌러 비트 한 자리만 바뀌는지도 본다.

성공 조건

  • 01000001을 만들어 값이 65로 나오게 한다
  • 글자 'A'의 ASCII 코드가 65, 'a'가 97임을 비트로 확인한다
  • 비트 하나를 토글하면 값이 그 자리값만큼 바뀌는 것을 본다

0과 1 · 자리값 · ASCII

이진수와 문자 표현

컴퓨터는 0과 1만 안다. 숫자도 글자도 명령도 전부 비트 패턴으로 번역해야 읽힌다. 이진은 모든 데이터의 공통 언어다.

IBMMicrosoft
P.0110 · 이진수와 문자 표현

왜 0과 1만 쓰나, 스위치의 두 상태

컴퓨터 속은 결국 수많은 스위치다. 켜짐 아니면 꺼짐, 딱 두 상태뿐이다.

전압이 높으면 1, 낮으면 0으로 약속한다. 중간을 안 쓰니 잡음에 덜 흔들리고 틀릴 일이 적다.

10단계 전압을 구분하려 애쓰는 것보다, 있다와 없다 둘만 구분하는 게 훨씬 안 망가진다. 그래서 기계는 0과 1 두 기호만 다룬다.

이 한 자리를 비트라 부른다. 비트 하나는 0 또는 1 하나다. 비트 8개를 한 묶음으로 다루면 그게 1바이트다.

스위치 8개를 켜고 꺼보면 바이트가 된다
스위치 패널 · 켜짐 1 / 꺼짐 0
스위치를 눌러 켜고 꺼보셈, 비트 8개 = 1바이트
읽어낸 1바이트
01000010

켜진 스위치 2개 · 비트 8자리 = 1바이트

P.0210 · 이진수와 문자 표현

이진수로 숫자를 표현한다, 자리값

우리가 쓰는 십진수는 자리마다 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가지 숫자를 적을 수 있다.

비트를 켜며 자리값을 더해 숫자 만들기
자리값 더하기 · 자리마다 2의 거듭제곱
자리를 눌러 켜셈, 켜진 자리값을 다 더하면 그게 숫자
27128
2664
2532
2416
238
224
212
201
켜진 자리값의 합

64 + 1 = 65

8비트로 0부터 255까지 · 256가지

P.0310 · 이진수와 문자 표현

글자도 비트다, ASCII라는 약속표

글자는 모양이라 그냥은 셀 수 없다. 그래서 글자마다 번호를 미리 약속해 둔다.

그 약속표가 ASCII다. 1963년 미국에서 표준으로 만들었다. A는 65, B는 66, a는 97, 숫자 글자 '0'은 48이다.

글자를 이 정해진 비트 패턴으로 바꾸는 일이 인코딩이다. 'A'를 적으면 메모리에는 01000001로 저장된다.

대문자와 소문자는 딱 32(=100000) 차이라 비트 한 자리만 다르다. 이렇게 규칙이 있어 정렬도 변환도 계산으로 처리된다.

글자를 누르면 약속된 ASCII 비트가 켜진다
ASCII 약속표 · 글자 → 번호 → 비트
글자를 골라보셈
A
ASCII 번호
65
0
1
0
0
0
0
0
1
대문자 ↔ 소문자는 32 = 비트 한 칸 차이
A65
0
1
0
0
0
0
0
1
a97
0
1
1
0
0
0
0
1

테두리 친 32 자리 하나만 다름 · 나머지 7비트는 똑같음

P.0410 · 이진수와 문자 표현

같은 비트, 약속이 뜻을 정한다, 인코딩

비트 패턴 자체에는 뜻이 없다. 01000001은 그냥 켜짐과 꺼짐의 줄일 뿐이다.

숫자로 읽기로 약속하면 65, 글자로 읽기로 약속하면 'A', CPU 명령으로 읽기로 약속하면 어떤 동작이다.

명령도 결국 비트다. 더해라, 옮겨라 같은 연산이 정해진 비트 코드로 적혀 있어 CPU가 그걸 읽고 실행한다.

그래서 같은 메모리 한 칸이 데이터도 되고 명령도 된다. 비트는 공통 언어이고, 해석이 그 뜻을 정한다.

같은 8비트를 숫자·글자·명령으로 바꿔 읽기
같은 8비트, 약속이 뜻을 정함
메모리 한 칸 (1바이트)01000001숫자로 읽으면6564 + 1글자로 읽으면AASCII 65명령으로 읽으면ADDCPU 동작비트는 그대로 · 약속(해석)이 뜻을 정함그래서 같은 칸이 데이터도, 명령도 됨
P.0510 · 이진수와 문자 표현

직접 이진 인코더 해보기

오른쪽 인코더에서 숫자와 글자를 직접 8비트로 바꿔본다.

숫자 탭에서는 슬라이더를 움직이거나 비트를 직접 토글하며 자리값의 합이 값이 되는 것을 확인한다.

글자 탭에서는 글자 하나의 ASCII 비트가 뜬다. 같은 8비트가 숫자로도 글자로도 동시에 읽히는 것을 눈으로 확인한다.

외우지 말고 직접 움직여 본다. 비트가 곧 모든 데이터의 공통 언어라는 사실이 손에 잡힌다.

슬라이더로 숫자를 0~255 사이에서 움직이면 8비트가 켜지고 꺼진다. 비트를 직접 토글하면 값이 다시 계산된다. 글자 탭에서는 글자의 ASCII 비트가 뜨고, 같은 비트가 숫자와 글자로 동시에 읽힌다.
이진 인코더 · 같은 8비트, 두 해석
입력, 슬라이더로 0~255, 또는 비트를 직접 토글
65
8비트, 켜진 자리값의 합이 값
128
64
32
16
8
4
2
1

64 + 1 = 65

같은 8비트의 두 해석
숫자로 읽으면
65
글자로 읽으면 (ASCII)
A

비트는 그저 0/1 패턴임. 숫자로 볼지 글자로 볼지는 약속이 정함.

3줄 요약

  1. 1컴퓨터는 켜짐과 꺼짐 스위치라 0과 1만 다룬다. 비트 8개가 1바이트다.
  2. 2숫자는 2의 거듭제곱 자리값을 더해 이진수로 표현한다.
  3. 3글자와 명령도 약속된 비트 패턴이다. 이진은 공통 언어이고 해석이 뜻을 정한다.

완료 전 점검

복습 카드

비트

0 또는 1 한 자리. 컴퓨터의 가장 작은 정보 단위

바이트

비트 8개 묶음. 0~255, 256가지를 표현한다

ASCII

글자를 비트로 약속한 표. A는 65, a는 97