목표
1. 컴퓨터가 이해하는 정보 단위의 학습
2. 이진법과 십육진법의 이해와 변환
정보 단위
비트(bit) : 0과 1을 나타내는 가장 작은 정보 단위 ( 켜짐/꺼짐 )
n비트는 2^n 가지의 정보를 표현할 수 있음
바이트(byte) : 8개의 비트를 묶은 단위 ( 2^8인 256개의 정보를 표현할 수 있음)
킬로바이트(kB) : 1000바이트
메가바이트(MB) : 1000킬로바이트
기가바이트(GB) : 1000메가바이트
테라바이트(TB) : 1000기가바이트
* 워드(word) : CPU가 한 번에 처리할수 있는 데이터 크기 ( ex : 한 번에 16비트를 처리할 수 있다면 1워드는 16비트 )
이렇게 정의된 워드의 절반 크기를 하프 워드, 1배 크기를 풀 워드, 2배 크기를 더블 워드라고 한다.
이진법
0과 1만으로 모든 숫자를 표현하는 방법. ( 자세한 설명은 생략, 수학 시간에 배웠다 )
이진수로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법이다.
2의 보수의 사전적 의미는 '어떤 수를 그보다 큰 2^n에서 뺀 값'이다. ( ex : 11 2의 보수는 11보다 큰 100에서 11을 뺀 01 )
이를 쉽게 하자면, '모든 0과 1을 뒤집고 거기에 1을 더한 값'으로 편하게 구할 수도 있다.
더해서, 음수와 양수를 표시해주는 플래그(flag)를 사용한다. 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용해 값의 부가정보를 나타낸다 .
십육진법
이진법을 사용해 모든 숫자를 0과 1로 나타낼 수 있고, 하나의 비트로 나타낼 수 있기에 직관적이고 쉬워 보이지만,
숫자의 길이가 너무 길어진다는 단점이 있다. 그래서 데이터를 표현할 때 십육진법도 자주 사용한다.
십육진법은 10부터 16까지 A,B,C,D,E,F 를 사용한다.
십육진수와 이진수의 변환은 간단하다. 십육진수의 한 글자를 4비트의 2진수로 간수하고 이어 붙이면 된다.
반대로 이진수의 십육진수 변환은 숫자를 네 개씩 끊고 하나의 십육진수로 변환시킨 뒤 이어붙이면 된다.
질문 : 왜 플래그로 1101을 -13이라고 표시하지 않고 굳이 보수를 구해 음수를 나타내는가 ?
연산 처리를 위해서다. 음수도 덧셈으로만 처리되게 하기 위한 것으로 빼기, 조건분기 등 복잡한 회로 없이 모든 연산을 덧셈 회로 하나로 처리할 수 있게 하는 것이 목적이다.
예를 들어서 플래그만 바꿔주면서 음수와 양수를 표시한다면
+3 : 0011 (flag=positive)
-2 : 0010 (flag=negative)
→ 0011 + 0010 = 0101 → 어라? 이건 +5네?
→ 근데 이건 사실 “+3 -2”니까 결과는 +1이어야 함
→ 복잡하게 조건 나눠서 처리해야 함 (음수면 뺄셈 로직 따로...)
다음과 같이 조건을 나눠주어서 처리해야 한다.
만일 2의 보수 방식으로 음수를 표현하면 ( 예시 +3 + (-2) )
+3 → 0011
+2는 0010이고 보수는 1110이 된다.
이 둘을 덧셈만으로 계산하면
0011 (+3)
+ 1110 (-2)
--------
10001
이렇게 나오게 되고, 우리는 4비트 연산중이기 때문에 하위 4비트만 사용하게 되면 1이 나오게 된다.
이렇게 하드웨어가 간단해지고, 연산 속도도 빨라지고, 전력도 절약되기 때문에 이런 방식을 쓴다.
다만 비트 수가 늘어나면 연산 결과가 틀린 현상이 발생할 수도 있다. 이런 현상을 오버플로우(Overflow)
라고 한다. 그러나 '표현 범위 내에서'는 항상 정확한 결과가 나온다. 이런 일들을 해결하기 위해 오버플로우를 감지하고
처리하는 플래그도 CPU에 존재하고, 하드웨어에서 감지해서 프로그래머에게 알려주게 된다.
'개념공부 > 컴퓨터구조와 운영체제' 카테고리의 다른 글
03장 - 2 : 명령어의 구조 (0) | 2025.03.28 |
---|---|
03장 - 1 : 소스 코드와 명령어 (0) | 2025.03.26 |
02장 -2 : 0과 1로 문자를 표현하는 방법 (0) | 2025.03.26 |
01장 - 2 . 컴퓨터 구조의 큰 그림 (0) | 2025.03.23 |
00. 왜 공부하는가 ? (0) | 2025.03.20 |