컴퓨터/프로그래밍 기초
지금까지 우리는 프로그래밍을 하기위해 많은 내용들을 공부했습니다. 이제 컴퓨터의 메모리 안에서 숫자를 어떻게 표현하는지 알아보도록 하겠습니다. 알아두어야 할 내용들을 정리해 보겠습니다.
위의 내용으로 정리하자면 메모리에 정수를 표현하고 변수를 이용해 자유롭게 변경, 이용하려면 다음과 같이 정리됩니다.
자료형을 선택하고 변수를 선언 후 메모리에 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의 보수법은 따로 자세히 다루도록 하겠습니다.
컴퓨팅 사고력 (0) | 2021.05.28 |
---|---|
데이터의 자료형 - 변수의 크기 (0) | 2021.05.10 |
메모리에 데이터를 사용하기 위한 방법 - 변수 (0) | 2021.05.09 |
메모리의 구조 (Memory Structure) (0) | 2021.05.07 |
프로그래밍의 절차와 방법 그리고 IDE (0) | 2021.05.03 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet