본문 바로가기
CS/컴퓨터 구조

[Chapter 2.2 컴퓨터 구조 및 설계] 2진법, 2의 보수, 16진법

by 베어 그릴스 2022. 7. 7.
본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson,존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다.

 

2진수 그리고 부호 있는 수와 부호 없는 수


컴퓨터는 숫자를 어떻게 표현할까?

대부분 알겠지만 보통 2진수를 사용하여 표현한다.

 

2진수의 기본적인 설명은 생략하고 넘어가겠습니다.

 

그렇다면 컴퓨터에서 음수를 어떻게 표현할까?

 

바로 2의 보수 표현법을 사용한다.

 

2의 보수

 

가장 앞쪽의 bit 즉, MSB(most significant bit)를 부호 대신해서 사용하여 양수면 0, 음수이면 1로 사용하는 것이다.

이렇게 하면, 표현할 수 있는 범위가 2^n - 1 ~ 0에서 2^(n-1) ~ –2^(n–1)로 바뀌게 된다.

 

2의 보수 공식은 다음과 같다.

즉, msb에 1이 오면 2^(n-1) 이 나머지에서 빼 지기 때문에 음수가 나올 수밖에 없게 되는 것이다.

 

이렇게 해서 2의 보수 표현법에서 가장 작은 수는 1000000... 이 될 것이고 가장 큰 수는 0111111... 이 되는 것이다.

 

2의 보수 표현법으로 양수 음수를 가장 쉽게 구하는 방법은 모든 bit를 반대로 바꾸고 1을 더해주면 된다.

 

 

예를 들어서

0011의 3을 -3으로 만드려 한다면, 우선 1100으로 바꿔주고, 1을 더해주면 1101이 되고,

이는 -8+5로 -3이 된다. -3의 경우도 마찬가지로 0010으로 바꿔주고, 1을 더해주면 0011로 +3이 된다.

 

2의 보수 표현법은 꼭 기억해두도록 하자.

 

 

2의 보수 표현법 예시

 

부호 확장 (Sign Extension)


2의 보수가 16bit로 있을 때, 우리는 32bit로 확장해야 할 필요가 있다.

 

양수 일땐, 앞에 그냥 0을 16개만 붙이면 수가 그대로 보존될 것이다.

 

음수 일땐? 앞에 0이 아닌 1을 16개 붙이면 수가 그대로 보존되게 된다.

 

 

16진법


0~15를 한자리에 표현하는 수이다.

2진수를 4bit마다 끊어서 계산하면 16진법을 표현할 수 있다.

16진법 표

예를 들어,eca8 6420을 2진법으로 변환하면, 

1110 1100 1010 1000 0110 0100 0010 0000이 된다.