Taking baby-developer steps

2-3. 변수와 상수 - 정수의 표현 방법/부호절대값 방식/2의 보수 방식/실수의 표현 방법 본문

CS 지식/C언어_basic

2-3. 변수와 상수 - 정수의 표현 방법/부호절대값 방식/2의 보수 방식/실수의 표현 방법

Surin Lee 2021. 3. 17. 11:39

정수의 표현 방법

컴퓨터가 정수(Integer)를 처리하는 방법은 다음과 같다. 컴퓨터는 내부적으로 2진수로 숫자를 표현한다.(0또는 1) 9를 2진수로 나타내보면 다음과 같다.

 

부호절대값 방식

- 1B(=8bit)의 공간이 있을 때,

0 0 0 0 1 0 0 1
부호 64 32 16 8 4 2 1

이렇게 부호까지 포함해서 8칸(8비트)을 표현하는 방식을 부호절대값 방식이라고 하는데, 이렇게 1의 공간이 있는 경우, -127~+127까지 표현이 가능하다.

 

이와 같이, 부호절대값 방식(가장 왼쪽 비트를 부호 비트로 사용하는, 컴퓨터가 정수를 내부적으로 표현하는 방식 중 하나)으로 -9를 표현 해보면 다음과 같다.

1 0 0 0 1 0 0 1
부호 64 32 16 8 4 2 1

(부호에서 0: 양수, 1: 음수)

 

그런데, 이와같은 부호절댓값 방식은 다양한 값의 연산을 수행하기 적합하지 않기 때문에, 정수를 표현 할 땐 2의 보수를 사용한다.

 

2의 보수 방식

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

2의 보수 = 1의 보수 +1

(1의 보수란, 모든 비트를 뒤집는 것이라고 생각하면 된다.)

정수 9를 2의 보수방식으로 표현하면 다음과 같다.

이처럼 2의 보수를 이용하면, 덧셈 연산만을 이용해서 양수와 음수를 연산할 수 있게되는데, 이 때 올림수가 발생하면 무시한다. -9와 +9를 2의 보수 형태에서 합쳐보면,

 

 

실수의 표현 방법

일반적으로 컴퓨터는 오차 없이 정확히 실수를 표현할 수 없다. 따라서 넓은 범위의 실수를 표현하는 방식을 사용한다. 컴퓨터는 실수를 표현할 때 부호, 지수, 유효숫자를 이용한다.

((-1)^s)*M*(2^E)

위의 식을 유지하며, 기존의 한정적인 비트를, 3가지 부분(부호, 지수 부, 유효숫자 부)으로 나누어서 실수를 표현한다. 

(사실, 실수의 표현방법을 깊게 실습하려면, 컴퓨터 구조나 이산수학과도 관련이 깊기 때문에, 일단 C언어 문법을 배우는 입장에선 일단 넘어가기로 한다.) 

 

 

Comments