메모리에서의 정수 (음수와 양수)

컴퓨터/프로그래밍 기초

728x90
반응형

 

메모리에 정수를 표현하다.

지금까지 우리는 프로그래밍을 하기위해 많은 내용들을 공부했습니다.  이제 컴퓨터의 메모리 안에서 숫자를 어떻게 표현하는지 알아보도록 하겠습니다. 알아두어야 할 내용들을 정리해 보겠습니다. 

 

  • 컴퓨터는 2진수로 데이터를 표현한다.
  • 메모리의 최소 단위는 1Byte이다. 
  • 메모리를 얼마나 사용할지를 정하기 위해 자료형이 필요하다.
  • 메모리의 데이터를 저장하는 자료형은 크게 문자,정수,실수의 char,int,float이 있다.
  • 그 메모리 위치에 접근하기 위해 변수를 선언해야 된다.

위의 내용으로 정리하자면 메모리에 정수를 표현하고 변수를 이용해 자유롭게 변경, 이용하려면 다음과 같이 정리됩니다.

 

자료형을 선택하고 변수를 선언 후 메모리에 2진수로 정수를 표현한다.

 

그렇다면 이제 정수가 메모리에 어떻게 2진수의 형태로 올라오는지 알아보도록 하겠습니다.

 

양수의 표현

다양한 언어와 환경에 따라 정수의 자료형의 크기는 다를 수 있습니다. 하지만 오늘날 대부분의 정수형 자료형의 기본 크기는 4Byte이므로 4Byte의 기준으로 설명을 해 보도록 하겠습니다. 4Byte에 0을 표시한다면 아래와 같을 것 입니다.

 

메모리의 주소  1 2 3 4
2진수 데이터
10진수 =0
0000 0000 0000 0000 0000 0000 0000 0000

총 32자리의 2진수로 2^32 즉 4,294,267,296개를 표현하여 0~4,294,267,295까지 표현이 가능합니다. 

그렇다면 아래의 수는 몇일까요 ? 

 

메모리의 주소 1 2 3 4
2진수 데이터
10진수 =?
1111 1111 1111 1111 1111 1111 1111 1111

정답은 맞을수도 있고 틀릴수도 있습니다. 선택한 자료형이 어떤 것이냐에 따라 다르기 때문입니다. 통상적으로 정수를 표현하는 int의 자료형은 음수또한 표현을 하고 있기 때문입니다.

 

정리하자면 2^32 즉 4,294,267,296개를 음수와 양수 두개로 나뉘어서 사용합니다. 

따라서 통상적인 정수를 표현하는 자료형의 범위는 -2,147,483,648 ~ 2,147,483,647이 되는 것 입니다.

 

음수의 표현

그렇다면 음수를 표현하기 위해서 메모리에서는 어떻게 표현을 해야될까요 ? 바로 시작하는 첫번째 비트에 표현하는 정수의 부호를 표시해 주는 것 입니다. 아래 표와 같이 말이죠.

 

메모리의 주소  1 2 3 4
2진수 데이터
10진수 = ?
1000 0000 0000 0000
2진수 데이터
10진수 = ?
1111 1111 1111 1111

과연 위의 두가지의 숫자 중 어떤것이 더 작은 숫자 즉 큰 음수일까요 ? 정답은 다음과 같습니다.

 

메모리의 주소  1 2 3 4
2진수 데이터
10진수 = 2,147,483,468
1000 0000 0000 0000
2진수 데이터
10진수 = -1
1111 1111 1111 1111

어떤가요 ? 앞의 부호 비트만 표시되고 2진수의 셈법으로 계산을 하면 음수라고 생각하지 않으셨나요 ?  

아직 말씀을 안드린 내용이 있습니다. 컴퓨터는 뺄셈이 존재하지 않습니다. 그래서 음수와 양수의 셈을 계산하기 위해서 음수에는 2의 보수법을 이용하여 음수를 표현합니다.  이 2의 보수법을 이용함으로서 컴퓨터는 음수도 표현을 하고 뺄셈을 하지 않지만 뺄셈을 구현할수 있는 것 입니다.

일단은 메모리에 정수의 음수와 양수를 표현하는 방법에 대해 알아보고 2의 보수법은 따로 자세히 다루도록 하겠습니다.

 

요약

  • 메모리의 정수로 표현하는 자료형은 int로 통상 4Byte이다.
  • 2^32로 4,294,267,296개 표현이 가능하다.
  • 대부분의 언어 및 환경에서 int형은 음수와 양수를 둘다 표현을 하는 자료형으로 정의된다.
  • 그래서 범위는 -2,147,483,648 ~ 2,147,483,647 이다.
  • 음수를 표현하기 위해 부호 비트가 자료형의 맨 앞에 위치하고 있다.
  • 음수는 2의 보수법을 이용하여 표현을 한다.
  • 그 이유는 음수와 양수의 뺄셈 계산을 위한 목적이다.
728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :