일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 해외유학
- 케네스
- 파이데이아창의인재학과
- 미국유학생
- 자바 스터디
- F1학생비자
- 복수학위제도
- CSUS
- 미국대학생활
- 미국유학
- java
- i-20
- 사이드프로젝트
- 유학생대학생활
- 만다라트프로젝트
- JVM아키텍처
- Kenneth Park
- 미국유학생활
- California State University Sacramento
- jpa
- 유학생 준비물
- 개발일지
- 케네스로그
- 개인 프로젝트 개발일지
- 자바
- 2+2
- 부산외대
- Java 스터디
- 비전공자 git
- 미국대학
- Today
- Total
케네스로그
컴퓨터는 모든 것을 1과 0으로만 표현한다? 본문
컴퓨터의 세계 vs 사람의 세계
영화에서나 미디에서 컴퓨터는 1과 0으로만 소통한다는 얘기를 들어본 적 있을 겁니다. 하지만, 실제로 우리가 사용하는 컴퓨터, 휴대폰 등은 1과 0이 아니라 이미지 영상과 텍스트, 음악 등으로 가득하죠. 그렇다면 1과 0으로 소통한다는 것은 무슨 말 일까요?
컴퓨터는 사람이 사용하는 체계와 다른 방식의 체계를 갖고 있습니다. 그것은 1과 0으로만 이루어져 있으며, 이를 이진법(Binary)라고 합니다. 반면에, 사람은 10진법의 체계 속에서 살아가고 있죠. 우리는 두 손의 손가락들 ✋🤚로 0~10까지 셀 수 있지만, 컴퓨터는 불가능합니다. 왜냐하면, 그들이 사는 세계에서 1과 0이 아닌 숫자, 2~10까지의 숫자는 존재하지 않기 때문입니다.
123 이라는 숫자를 보았을 때, 우리는 직관적으로 '백-이십-삼' 이라고 읽습니다. 123은 그저 연속적으로 위치하고 있는 숫자라는 문자일 뿐인데 말이죠. 이렇게 우리가 문자의 연속으로 인지하지 않고 '123'이라는 숫자로 인식하는 이유는 10진법 체계에 있습니다.
123을 우리가 사용하는 10진법의 체계에서 쪼개어 살펴보면, (100*1) + (10*2) + (1*3)의 형태 입니다. 100이 1개 있고, 10이 2개 있으며, 1이 3개가 있는 상태죠. 이것을 10진법 표기법으로 하면, (10²+1) + (10¹+2) + (10⁰+1) 으로 표기될 수 있습니다.
2진법과 비트(bit)
111 이라는 표기를 보았을 때, 우리의 10진법 체계에서는 10²x1 + 10¹+1 + 10⁰+1, 즉 111 입니다. 하지만, 2진법의 체계에서는 2²+1 + 2¹ +1 + 2⁰+1 입니다. 즉, 4x1 + 2x1 + 1x1 이죠. 따라서, 2진법의 111은 10진법의 7을 나타냅니다.
2진법으로 숫자를 표기할 때, 10진법으로 표기할 때 보다 많은 숫자 자리가 필요합니다. 7이라는 숫자를 표현하기 위해서 2진법에서 3자리(111)가 필요했고, 10진법에서는 1자리(7)만 있으면 표현이 가능했습니다. 여기서 2진법에서 사용 되는 숫자의 자리 수를 비트(bit; binary digit) 라고 합니다.
컴퓨터 세계에서의 표현법
전기를 이용해서 컴퓨터를 동작 시킨다는 것은 누구나 아는 사실 입니다. 컴퓨터가 동작하는 모든 순간에 내부적으로 전기가 흐르고 있습니다. 전기가 흐르는 것과 전기가 흐르지 않는 것, 이렇게 2가지의 상태를 통해 컴퓨터는 숫자를 표현합니다. 즉, 무수히 많은 껏다 키는 스위치를 이용한다는 거죠.
4개의 스위치가 있고, 컴퓨터는 4개의 스위치에 전기가 흐르는 지 여부에 따라 숫자를 인식할 수 있습니다. 켜진 스위치는 1, 꺼진 스위치는 0으로 표현하면 다음과 같습니다. 모두 전기가 흐른다면 1111, 모두 전기가 흐르지 않는 다면 0000. 이렇게 4개의 스위치를 통해 컴퓨터는 최대 8이라는 숫자를 표현할 수 있죠. 6이라는 숫자를 표현 한다면 0110 으로 나타낼 수 있습니다. 앞서 이야기한 2진법의 체계와 같습니다.
💡트렌지스터, 그리고 컴퓨터의 발열
컴퓨터의 내부에는 전류의 흐름 상태를 저장하기 위해 '트렌지스터'라는 부품이 존재하며, 연산을 담당하는 장치는 수 많은 트렌지스터들이 존재하죠. 컴퓨터의 발열의 원인은 바로 이 트렌지스터 때문입니다. 많은 작업을 할 수록 컴퓨터가 뜨거워지는 이유는 많은 정보들이 트렌지스터들을 통해 연산되는데, 이 연산과정에 전기가 흐르기 때문에 발열이 생기는 겁니다.
비트열과 데이터의 단위
한 개의 비트로는 2가지의 상태 밖에 표현할 수 없습니다. 훨씬 더 많은 것들을 표현하기 위해서 비트들을 모아서 사용합니다. 8개의 비트가 모여서 1개의 바이트(byte)를 이루게 됩니다. 1개의 바이트는 2^8개(256)의 표현(1byte=8bit) 을 할 수 있으며, 바이트는 디지털 정보를 표현하는 기본 단위입니다.
10진법 체계(Decimal) | 2진법 체계(Binary) | ||
Kilobyte (kB) | 1000 bytes | Kibibyte (KiB) | 1024 bytes |
Megabyte (MB) | 1000² bytes | Mebibyte (MiB) | 1024² bytes |
Gigabyte (GB) | 1000³ bytes | Gibibyte (GiB) | 1024³ bytes |
Terabyte (TB) | 1000⁴ bytes | Tebibyte (TiB) | 1024⁴ bytes |
Petabyte (PB) | 1000⁵ bytes | Pebibyte (PiB) | 1024⁵ bytes |
Exabyte (EB) | 1000⁶ bytes | Exbibyte (EiB) | 1024⁶ bytes |
Zettabyte (ZB) | 1000⁷ bytes | Zebibyte (ZiB) | 1024⁷ bytes |
Yottabyte (YB) | 1000⁸ bytes | Yobibyte (YiB) | 1024⁸ bytes |
2^8비트 (256비트)가 1 바이트 임을 배웠습니다. 1 킬로바이트는 2^10바이트 (1024바이트)입니다. 여기서 혼란스러운 점은 우리가 보통 사용하는 체계에서 kilo(킬로)는 1000을 의미하죠. 1 킬로바이트는 정확히 말해 1000 + 24 바이트의 형태입니다. 하지만, 간혹 하드디스크 용량 표기나 다른 곳에서 1000바이트 를 1킬로바이트로 표기하는 경우가 있습니다. 제가 찾아본 바 24라는 잉여 바이트가 존재하지만 편의상 1000바이트를 1킬로바이트로 명명하는 듯 했습니다. 이 부분에 대한 이야기는 다음 포스팅에서 소개하겠습니다.
이 글은 부스터코스 CS50 수업을 들으며 정리한 내용입니다.
'Dev > CS 기초' 카테고리의 다른 글
인터넷과 웹의 차이점 (0) | 2021.02.05 |
---|