일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 중학1-1
- 중학수학
- 자바
- 정보처리기사실기
- 데이터분석
- 정보처리기사필기
- 디버깅
- 컴퓨터비전
- 연습문제
- 자바스크립트심화
- 머신러닝
- JSP
- JSP/Servlet
- rnn
- 컴퓨터구조
- 티스토리챌린지
- 오블완
- CSS
- SQL
- 상속
- c언어
- 순환신경망
- 데이터베이스
- JDBC
- 딥러닝
- 자바 실습
- 자바스크립트
- 혼공머신
- 파이썬
- html/css
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
데이터 1 - 0과 1로 숫자를 표현하는 방법 본문
이번 시간부터는 컴퓨터가 이해하는 정보의 단위를 학습하고, 2진법과 16진법을 통해 다양한 숫자를 표현하는 방법을 학습해 볼 것이다.
정말 어떤 수업일지 기대가 된다.
컴퓨터는 0과 1로 모든 정보를 표현하고, 0과 0로 표현된 정보만을 이해할 수 있다. 그런데 어떻게 0보다 큰 숫자를 계산하고 표현할 수 있을까? 이에 대한 답을 찾기 위해 컴퓨터가 표현하는 정보 단위를 학습하고, 0과 1만으로 숫자를 표현하는 방법을 배워볼 것이다.
정보 단위
비트는 전구에 빗대어 생각해보면 이해하기 쉽다. 1비트로는 0 또는 1, 두 가지 정보를 표현할 수 있다.
2비트로는 4개의 정보를, 3비트로는 8개의 정보를 표현할 수 있다.
1바이트를 1000개 묶은 단위를 1킬로바이트라고 한다. 이런 식으로 각각 천 개씩 단위가 올라간다. 1024씩 묶은 단위는 따로 있기에 1024씩 묶어 표현하는 것은 잘못된 관습이다. 과거에는 다루는 정보의 크기가 별로 크지 않아서 혼용해서 사용해도 별 문제가 되지 않았다.
하지만 지금은 다루는 단위가 워낙 크다보니 사소한 차이가 큰 정보의 차이로 이어지게 된다. 그렇기에 지금은 이 둘을 구분해서 쓰는 추세이다.
만약 CPU가 한번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고, 한 번에 32비트를 처리할 수 있다면 1워드는 32비트가 된다. 워드 크기가 큰 CPU는 한 번에 처리할 수 있는 데이터가 많다. 워드 크기는 CPU마다 다르지만 현대 컴퓨터의 워드 크기는 대부분 32비트 또는 64비트이다.
이진법
십진수 8을 컴퓨터에게 알려주면 이진수로 표현한 1000을 알려주면 된다.
어떤 진수인지 알 수 없으니 2진수를 표현할 때는 이처럼 아래첨자를 붙이거나 이진수앞에 0b를 붙인다. 전자는 수학적으로 표기할 때, 후자는 코드 상에서 표기할 때 사용한다.
이진수의 음수 표현
컴퓨터는 0과 1만 이해할 수 있기 때문에 마이너스 부호를 사용하지 않고 0과 1만으로 음수를 표현해야 한다. 0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법이다.
모든 이진수의 0과 1을 뒤집은 수를 1의 보수라고 한다. 거기에 1을 더한 값을 2의 보수라고 한다. 컴퓨터는 이 수를 음수로 간주한다.
이 값이 진짜 음수인지 확인해보겠다.
실제로 이진수만 봐서는 이게 음수인지 양수인지 구분하기 어렵다. 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지 구분하기 위해 플래그를 사용한다.
플래그는 쉽게 말해 부가 정보이다. 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용한다. 컴퓨터 내부에서 숫자들은 '양수' 혹은 '음수'가 적혀 있는 표시를 들고 다니므로 컴퓨터가 부호를 헷갈릴 일은 없다로 생각하면 된다.
십육진법
십육진수 A~F 쉽게 이해하는 방법
이해하기 좋은 팁을 소개한다.
따라서 십육진수 D는 13이다.
십육진수로 아래 첨자를 표기하거나 0X를 써서 표시한다. 굳이 왜 십육진법을 사용할까? 여러 가지 이유가 있지만, 십육진법을 사용하는 주된 이유 중 하나는 이진수를 십육진수로, 십육진수를 이진수로 변환하기 쉽기 때문이다.
위 코드가 무슨 뜻인지는 알 필요는 없다.
십육진수를 이진수로 변환하기
십육진수 한 글자를 4비트의 이진수로 간주한다. 16진수를 이루고 있는 각 글자를 따로따로 2진수로 변환하고, 그것들을 그대로 이어 붙이면 16진수가 2진수로 변환된다.
이진수를 십육진수로 변환하기
반대로 2진수를 16진수로 변환할 때는 2진수를 4개씩 끊고, 끊어 준 4개의 숫자를 하나의 16진수로 변환한 뒤 그대로 이어 붙이면 된다.
단원 마무리하기
문제를 모두 맞힌 걸 보니 이번 단원 학습을 아주 잘했음을 느꼈다. 많이 부족하다고 생각했는데 지금 잘하고 있다고 생각하기로 했다.
학습을 마치고
오늘 오후에 기획 발표가 있는 것을 깜빡 잊었다. 난 팀 프로젝트를 하지 않기 때문에 발표회에 참여하고 싶지 않았지만 억지로 자리에 앉아있었다. 가서 공부도 하지 못했고 잠만 자다가 와서 마음이 정말 안 좋았다.
그리고 5시가 다 되어서 발표회가 끝나서 교실로 돌아와 나머지 공부를 진행해 본다. 3시간이나 공부를 하지 못해서 아쉽기도 하지만 일정상 어쩔 수 없었다.
이 단원도 쉽지 않은 단원이었다. 그래도 십진수와 이진수, 십육 진수에 대해서 학습해 볼 수 있는 좋은 시간이었다.
'알고리즘 및 자료 관리 > 컴퓨터 구조 & 운영체제' 카테고리의 다른 글
데이터 3 - 0과 1로 문자를 표현하는 방법 2 : 유니코드와 UTF-8 (0) | 2024.10.14 |
---|---|
데이터 2 - 0과 1로 문자를 표현하는 방법 1 : 문자 집합과 인코딩 및 다양한 인코딩 방식에 대하여 (0) | 2024.10.14 |
컴퓨터 구조 시작하기 5 - 컴퓨터의 구조 직접 눈으로 보면서 이해하기 (0) | 2024.10.14 |
컴퓨터 구조 시작하기 4 - 컴퓨터 구조의 큰 그림 2 : 컴퓨터의 4가지 핵심 부품 이어서 (0) | 2024.10.14 |
컴퓨터 구조 시작하기 3 - 컴퓨터 구조의 큰 그림 1 : 컴퓨터가 이해하는 정보 및 컴퓨터의 4가지 핵심 부품 (0) | 2024.10.14 |