CS/컴퓨터구조

[컴퓨터구조] 데이터의 이해(1)

nowkoes 2023. 6. 1. 15:23

<본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다>


정보 단위와 진법

개요

 데이터는 정적인 정보로서 컴퓨터에서 처리하는 기본적인 단위다. 이는 정보를 구성하는 최소 단위비트로(bit)로 이루어져 있으며, 0과 1로 표현된다. 따라서 1비트는 2개의 데이터를 가질 수 있고, n비트는 2^n가지 정보를 표현할 수 있다.

 

 데이터는 이 비트들이 모여서 더 큰 단위인 바이트(Byte)를 형성하게 된다. 바이트는 일반적으로 8비트로 구성되며, 컴퓨터에서 데이터를 저장하고 처리하는 기본 단위로 사용된다. 바이트 또한 더 큰 단위로 묶일 수 있는데, 1000바이트가 모여 1킬로바이트(kB, Kilobyte)가 되고, 1000킬로바이트가 모여 1메가바이트(MB, Megabyte), 1000메가바이트가 모여 1기가바이트(GB, Gigabyte), 1000기가바이트가 모여 1테라바이트(TB, Terabyte)가 된다. 테라바이트보다 더 큰 단위도 있으나, 우리가 다루게 될 데이터의 크기는 최대 테라바이트까지인 경우가 많다.

 

 또한 워드(Word)라는 단위도 존재한다. 워드는 CPU가 한 번에 처리할 수 있는 데이터의 크기를 의미한다. 만약 CPU가 한 번에 16비트를 처리할 수 있으면 1워드는 16비트가 되고, 32비트를 처리할 수 있으면 1워드는 32비트가 되는 것이다.

 

 이와 같이 데이터는 여러 단위로 표현되고 관리되지만, 결국 컴퓨터의 핵심은 이 데이터를 어떻게 효과적으로 처리하고 관리하는가에 달려있다. 컴퓨터 구조는 이를 위해 CPU, 메모리, 입출력 장치 등으로 구성되어 있으며, 이들은 서로 유기적으로 연결되어 데이터를 처리하는 데 있어 중추적인 역할을 수행한다.


진법

이진법

 수학에서 0과 1만으로 모든 숫자를 표현하는 방법이진법(Binary)라고 한다. 이 방식은 컴퓨터의 핵심 원리에 깊숙이 녹아있는데, 이진 시스템을 차용하면 회로 설계와 정보 처리가 간단해지고, 여러 상태를 처리하는 시스템에 비해 노이즈나 다른 방해 요인에 대한 내성이 뛰어나다. 또한 연산, 저장, 전송 등에서도 효율적이다. 이진법을 통해 컴퓨터는 1 이상의 숫자도 이해하고 표현할 수 있다. 다음은 십진수를 이진법을 통해 이진수로 변환하는 과정이다.

 

 

 이진법은 위와 같이 숫자가 1을 넘어가는 시점에 자리 올림을 하여 0과 1, 두 개의 숫자만으로 모든 수를 표현한다. 그리고 숫자만으로는 이 수가 어떤 진법으로 표현된 수인지 알 수 없기 때문에 아래첨자(2)를 붙이거나, 이진수 앞에 0b를 붙여 혼동을 미연에 방지할 수 있다.

 

 그렇다면 음수는 어떻게 표현할까? 0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수(two's complement)를 구해 이 값을 음수로 간주하는 방법이다. 2의 보수의 사전적 의미는 어떤 수를 그보다 큰 2^n에서 뺀 값을 의미한다. 예를 들어 11(2)의 2의 보수는 11(2)보다 큰 2^n, 즉, 100(2)에서 11(2)를 뺀 01(2)이 되는 것이다. 이를 쉽게 생각하면 모든 0과 1을 뒤집고, 거기에 1을 더한 값으로 이해하면 쉽다.

 

 

 다음 그림은 이진수를 2의 보수로 변환하는 과정을 나타낸 표다. 하지만 1(2)과 10(2)과 같이 보수와 양수의 값이 같은 경우가 존재한다. 즉, 이진수만 봐서는 이게 음수인지 양수인지 구분하기가 어렵다. 그래서 컴퓨터는 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지를 구분하기 위해 플래그(flag)를 사용한다. 자세히는 추후에 CPU 레지스터 부분에서 다루도록 하겠다. 지금은 단순히 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용한다는 정도만 기억하도록 하자.

 

십육진법

 십육진법(Hexadecimal) 수가 15를 넘어가는 시점에서 자리 올림을 하는 숫자 표현 방식이다. 따라서 십진수와 십육진수를 비교하면 다음과 같다.

 

 

 9 다음에 바로 10이 올 수 없으니 A부터 F를 이용해 16가지 수를 표현하였다. 십육진수도 이진수와 마찬가지로 숫자 뒤에 아래첨자(16)를 붙이거나, 숫자 앞에 0x를 붙여 구분한다.

 

 여기서 의문점이 생긴다. 우리는 십진수를 일상생활에서 자주 사용하며, 컴퓨터는 데이터를 처리하기 위해 이진수를 사용한다는 것을 알고 있다. 그렇다면 왜 십육진법이 필요한 것일까? 십육진법은 왜 만들어졌고, 그 용도는 무엇일까? 주요한 이유 중 하나는 십육진법이 이진수와의 변환 과정이 간편하기 때문이다. 이를 통해 복잡한 이진 데이터를 사람이 이해하기 쉬운 형태로 나타낼 수 있으며, 이는 디버깅 과정 등에서 매우 유용하게 사용된다. 

 

 

 다음은 십육진수 이진수로 바꾸는 과정이다. 십육진수를 이루고 있는 각 글자를 따로따로 이진수로 변환하고, 그것들을 그대로 이어 붙이면 십육진수가 이진수로 변환된다. 즉 A12B(16) = 1010000100101011(2)가 되는 것이다. 

 

 

 이진수를 십육진수로 바꾸는 과정이다. 이진수 숫자를 네 개씩 끊고, 끊어 준 네 개의 숫자를 하나의 십육진수로 변환한 뒤 그대로 이어 붙이면 된다. 즉, 01011101(2) = 5D(16)이 되는 것이다.


요약

정보 단위
- 비트, 바이트, 워드, 킬로바이트, 메가바이트, 기가바이트, 테라바이트

2진법과 16진법
1. 2진법 → 16진법: 2진수 숫자를 네 개씩 끊고, 끊어준 네 개의 숫자를 하나씩 16진수로 변환
2. 16진법 → 2진법: 16진수의 각 숫자를 2진수로 변환 
반응형