안녕하세요, C 프로그래밍 언어 열세번째 강의입니다.
오늘은 변수, 특히 정수형 변수를 컴퓨터가 어떻게 저장하는지에 대해 알아보겠습니다.
정수를 정의한다면, 자연수 전체와, 그 역원과 0을 말합니다.
아주 간단히 말해, 소숫점이 없는 숫자라 생각하시면 편합니다.
1, 2, 3, ..., 6512, ..., 등 자연수와, 0, 그리고 자연수에 음의 부호를 붙힌 숫자들을 생각하세요.
이전 실습 강의에서 우리는 정수를 컴퓨터에 저장하고 사용하기 위해서 변수의 선언 및 초기화를 하였습니다.
그때 사용하였던 변수 종류는 int였습니다.
int는 Integer의 약자이며, 정수를 뜻합니다.
정수를 저장하고 사용하기 위한 변수 종류입니다.
보통 int만 사용하거나 (signed) int를 작성한다면 양수, 음수를 모두 사용할 수 있습니다.
또한 이 변수 종류는 32비트(bit)의 저장공간을 사용합니다.
바이트(byte)와 비트(bit)에 대해서는 바로 전 강의에서 설명했습니다.
실제로 컴퓨터에 정수형 변수가 저장되는 방식입니다.
지난 시간에 설명했듯이 컴퓨터는 0과 1을 이용한 2진법을 사용합니다.
32비트란 0 혹은 1을 저장할 공간이 32개 있다는 뜻입니다.
1비트씩 32개로 이루어진 정수형 변수 저장공간에서 가장 왼쪽의 비트 하나는 부호를 의미합니다.
가장 왼쪽의 비트가 0이라면 양수, 1이라면 음수를 뜻합니다.
그리고 나머지 31비트는 정수의 크기를 뜻합니다.
32비트는 눈으로 살펴보기에 너무 길기 때문에 간단한 원리를 확인하기 위해 8비트로 대체해보았습니다.
가장 왼쪽의 비트는 0이며, 정수의 크기에는 101이 들어있는 상단의 정수는 +5를 뜻합니다.
2진법 101(2)은 5이기 때문이죠.
가장 왼쪽의 비트는 0이며, 정수의 크기에 111이 들어있는 하단의 정수는 +7를 뜻합니다.
2진법 111(2)은 7이기 때문이죠.
그렇다면 음수는 어떻게 표현할까요?
간단하게 생각하면, 가장 왼쪽의 비트가 정수의 부호를 나타내는 비트라고 언급했습니다.
따라서 -5를 표현하고 싶다면 가장 왼쪽 비트에 음수를 표시하고, 정수의 크기에 5를 넣으면 될까요?
검증하기에 앞서, 5-5=를 해보겠습니다. 5-5=는 5+(-5)=와 같습니다.
5와 -5를 이전 슬라이드에서 계산했듯이 비트로 만들어 덧셈을 해보겠습니다.
윗 슬라이드에서 정한 규칙대로 음수를 정하니, 계산의 결과가 -10이 나왔군요.
5+(-5)=0이 나와야하는데, 잘못된 계산 결과입니다.
컴퓨터는 기본적을으로 덧셈과 2진법밖에 할 줄 아는것이 없습니다.
(뺼셈은 음수로 만들어 더하고, 곱셈도 덧셈을 매우 빠르게 여러번 할뿐이죠.)
컴퓨터는 덧셈 밖에 할 수 없으니, 2의 보수법이란 것을 도입합니다.
이게 왜 음수지? 라는 생각보다는 음수를 표현하는 또 한가지의 규칙이라고 생각하시면 이해가 쉽습니다.
양수를 음수로 만드는 방법 중 하나로, 가장 먼저 모든 0을 1로 바꾸고 모든 1을 0으로 바꿉니다.
그리고 +1을 해줍니다. 그러면 2의 보수법을 이용한 음수로 만들기가 끝났습니다.
우리는 이러한 값을 음수라 말합니다. 같은 방법을 다시 반복하면 다시 양수가 되겠죠.
새로운 음수 규칙으로 만들어진 -5로 5+(-5)을 진행해볼까요.
와, 실제로 결과값이 0이 나왔습니다.
이렇게 컴퓨터는 음수를 저장할 땐, 2의 보수법을 이용하여 음수를 표현합니다.
다음 시간에는 실수를 컴퓨터는 어떻게 표현하는지에 대해 공부하겠습니다.
'Computer Science > C' 카테고리의 다른 글
Chapter 15. 비트 연산자 (0) | 2018.05.01 |
---|---|
Chapter 14. 실수 표현법 (0) | 2018.04.27 |
Chapter 12. 진법 (0) | 2018.04.24 |
Chapter 11. 연산자 우선순위 (0) | 2018.04.19 |
Chapter 10. 연산자 실습 (0) | 2018.04.18 |