스킬캠퍼스

오늘 끝나면

비트와 이진수

  • 비트와 이진수의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 비트와이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

스위치 하나에서 숫자로 — 자릿값·16진수·signed 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 02

비트와
이진수

칩 안에는 0과 1뿐이다.
0이나 1 하나가 비트이고, 비트를 자릿값으로 모으면 모든 숫자가 된다.
이 강에서 정한 비트 폭과 부호 방식이 MyChip의 데이터 단위가 된다.

P.01반도체 설계 · 02

비트는 0 아니면 1, 하나

칩은 숫자를 직접 세지 못한다. 켜짐과 꺼짐만 구분한다.

전선 한 가닥에 전압이 높으면 1, 낮으면 0이다.
이 둘 중 하나를 담는 가장 작은 자리가 비트(bit)다. binary digit의 줄임말이다.

비트 하나로 표현할 수 있는 건 딱 두 가지, 0 또는 1이다.
켜짐과 꺼짐, 참과 거짓, 예와 아니오, 무엇으로 읽든 상태는 둘뿐이다.

비트 하나로는 0과 1보다 큰 수를 적을 수 없다. 더 큰 숫자는 여러 비트를 한 줄로 모아서 표현한다.

스위치 하나가 비트 하나
비트 = 두 상태 하나

0

꺼짐 · 낮은 전압

1

켜짐 · 높은 전압

상태는 둘뿐이라 가장 작은 정보 단위다
P.02반도체 설계 · 02

자릿값으로 모으면 숫자가 된다

비트를 한 줄로 세우면 자리마다 무게가 다르다. 그 무게가 자릿값이다.

십진수는 자리마다 1, 10, 100…으로 10배씩 커진다.
이진수는 자리마다 1, 2, 4, 8, 16…으로 2배씩 커진다.
켜진(1) 비트의 자릿값만 다 더하면 그게 십진수 값이다.

예를 들어 1011은 8 + 0 + 2 + 1 = 11이다.
맨 오른쪽이 가장 가벼운 자리(LSB)이고, 맨 왼쪽이 가장 무거운 자리(MSB)다.

비트 수가 정해지면 표현 범위도 정해진다.
비트가 n개면 서로 다른 패턴이 2ⁿ가지, 즉 0부터 2ⁿ−1까지 셀 수 있다.

1·2·4·8… 가중치를 더함
자릿값 더하기 · 1011
8
1
+8
4
0
0
2
1
+2
1
1
+1
8 + 0 + 2 + 1 =11
켜진 비트의 자릿값만 더하면 십진수가 된다
P.03반도체 설계 · 02

16진수 = 4비트 한 묶음

비트를 길게 적으면 사람 눈이 따라가지 못한다. 그래서 4비트씩 묶어 한 글자로 줄인다.

4비트는 0000부터 1111까지 16가지다. 그 16가지에 글자를 하나씩 붙인 게 16진수다.
0부터 9까지로는 모자라서 A, B, C, D, E, F로 10부터 15까지를 적는다.

그래서 변환이 기계적이다. 4비트 묶음 하나가 16진수 한 글자에 그대로 대응한다.
1011 0110B6이고, 거꾸로 한 글자도 4비트로 그대로 풀린다.

코드에서는 0x를 앞에 붙여 16진수임을 표시한다.
긴 비트열을 짧게 적으면서 4비트 경계도 눈에 보인다. 그래서 칩 설계에서 주소와 데이터를 거의 16진수로 적는다.

4비트 → 한 글자
4비트 묶음 → 16진수 한 글자
1011B= 11
01106= 6
합치면1011 0110=0xB6
A~F = 10~15 · 긴 비트열을 짧게 적는 표기
P.04반도체 설계 · 02

음수는 맨 위 비트로, 2의 보수

지금까지는 0 이상만 셌다(unsigned). 음수를 담으려면 약속을 하나 더 정해야 한다.

가장 널리 쓰는 약속이 2의 보수(two’s complement)다.
맨 위 비트(MSB)의 자릿값만 음수로 뒤집는다. 4비트면 그 자릿값이 +8이 아니라 −8이 된다.

그래서 1011은 unsigned로 읽으면 11, signed로 읽으면 −8 + 2 + 1 = −5다.
같은 비트열인데 “이 칸을 signed로 읽기로 했나” 하나로 값이 갈린다.

이 방식이 표준이 된 이유는 덧셈 회로가 그대로 음수에도 맞기 때문이다. 뺄셈을 따로 만들지 않아도 된다.
4비트 signed 범위는 −8 ~ +7이고, n비트면 −2ⁿ⁻¹ ~ +2ⁿ⁻¹−1이다.
MyChip을 16비트로 정했으니, signed 범위는 −32768 ~ +32767이 된다.

signed는 부호 비트 한 칸
같은 1011 · 읽는 약속만 다름
1
0
1
1
8
4
2
1
unsigned11
-8
+4
+2
+1
signed · 2의 보수-5
맨 위 비트 자릿값만 −로 뒤집는다 (+8이 −8로)
P.05반도체 설계 · 02

직접 비트를 눌러 숫자를 만든다

비트를 켤 때마다 자릿값과 십진수, 16진수가 같이 바뀐다.

1010은 켜진 비트의 자릿값 8 + 2를 더해 십진수 10이다. 근거 패널에 자리별 기여가 그대로 뜬다.

폭을 4비트, 8비트, 16비트로 바꾸면 표현 범위가 늘어난다.
signed로 켜면 맨 위 비트 자릿값이 −로 바뀌어 같은 비트열이 음수로 읽힌다.
여기서 고른 폭과 부호 방식이 그대로 MyChip의 기본 데이터 단위가 된다.

Q. 4비트로 표현할 수 있는 서로 다른 수는 몇 개?정답은 16개다 (2⁴).
비트 하나가 2가지이고, 네 자리면 2 × 2 × 2 × 2 = 16가지 패턴이다.
unsigned면 0~15, signed(2의 보수)면 −8~+7이다. 어느 쪽이든 가짓수는 똑같이 16개다.
비트 패널 · 폭/부호 전환

BIT PANEL

101111

8

8

4

0

2

2

1

1

3줄 요약

  1. 1스위치 하나에서 숫자로 — 자릿값·16진수·signed
  2. 2비트와 이진수은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

비트와

스위치 하나에서 숫자로 — 자릿값·16진수·signed

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩