프로그래밍 독학 첫걸음 03. 자료형
안녕하세요 피향입니다.
오늘은 변수의 형식을 정해주는 자료형에 대하여 알아보는 시간입니다.
01. 자료형이란 무엇일까요?
자료형이란? 변수에 어떤 값을 저장할 것인데 그 값이 어떤 형태인지 정해준 것을 말합니다.
예를 들어서 변수 age라는 것을 만들었는데, 이 변수에 사용자의 나이를 저장할 것입니다.
그렇게 되면, 나이는 소숫점이 없는 정수이므로 정수형 이라는 자료형을 지정해줘야 겠지요.
그렇게 되면 C언어 기준 다음과 같이 쓰게 됩니다.
int age;
영어에서 정수를 integer라고 표현하기 때문에 그 앞글자를 따서 int라고 합니다.
실제 코딩하는 화면에서는 아래와 같이 쓰인답니다.
02. 자료형에 따라 변수의 크기가 달라진다?
우리는 전편에서 변수를 얘기할 때, 일정량의 공간에 어떤 데이터를 저장한다고 말했었습니다.
이 자료형을 정해주는 이유 중에 하나는 변수에 들어가는 데이터의 형식을 지정해준다는 것도 있으나,
그 형식을 표현하기 위한 데이터의 크기를 지정하는 데에도 기여를 하게 됩니다.
1번 예시
예를 들어서 정수형의 경우에는 62와 같이 정수 부분만 저장하면 되지만
62.725같은 소수의 경우, 소숫점 뒤의 숫자도 더 저장해야 하기 때문에 아무래도 그 용량이 더 크게 필요하겠죠?
2번 예시
컴퓨터들은 0과 1을 사용한다고 하였습니다. 그렇기 때문에 어떤 값을 저장할 때에는 이진수로 저장을 하게 됩니다.
한 글자당 1bit의 용량을 차지한다고 했을 때, 4를 저장하려면 이진수로 100 즉 4bit를 사용하게 되겠죠?
하지만 4000이라는 값을 저장하려면요? 1111 1010 0000 이라는 12bit를 사용하게 됩니다.
만약 은행이라면? 몇억, 몇조의 금액을 저장해야 하기 때문에 용량이 크게 필요하겠죠?
하지만 그 은행의 천문학적인 숫자를 고려하여 정수를 저장할 때 언제나 용량을 크게 잡아버리면 용량 낭비가 크게 됩니다.
그래서 쓰는 숫자의 범위에 따라서 크기가 작은 것, 크기가 큰 것 이렇게 자료형을 따로 만들어서 관리를 하게 되는데 이러한 경우도 있다는 것을 알고 계셔야 합니다.
03. 숫자를 표기할 때 음수는 어떻게 표기할까?
일단 이 부분을 알고 있어야, 자료형에 대해서 좀 더 쉽게 이해할 수 있기 때문에 내용을 진행합니다.
일단 우리가 1byte의 공간을 가지게 되는 정수형 변수를 만들었다고 합시다.(자료형=정수형)
그럼 아와 같이 8bit(1byte=8bit). 총 8칸의 숫자를 넣을 수 있는 칸을 배정받게 됩니다.
자 그러면 우리가 숫자 1을 저장한다고 생각합시다. 그러면 아래와 같습니다.
우리는 총 8칸을 모두 이용하여 0000 0001이라는 결론을 얻게 됩니다.
하지만 -1은요? -1은 - 부호가 붙기 전에서 보수화라는 작업을 거치게 됩니다.
이 보수화 작업을 거치게 되면 가장 큰 자릿수. 즉 맨 왼쪽이 1로 바뀌게 됩니다.
-1을 이진수로 표현하면 아래와 같습니다
즉, 맨 왼쪽은 음수임을 알리기 위해서 1로 고정시켜야 하므로 총 오른쪽의 7칸만 숫자를 표현하는데 사용할 수 있다
라는 결론이 나오게 됩니다.
근데, 또 음수만 맨 왼쪽을 사용하게 되면... 양수 255를 나타내는 1111 1111은요?
컴퓨터가 음수로 알아들을 수 있기 때문에 만약, 부호를 구별하려면 맨 왼쪽은 0이면 양수, 1이면 음수를 나타내는 고정값으로 인식하게 됩니다.
즉, 숫자는 총 7칸을 사용할 수 있게 되어 양수 쪽으로는 0~127까지, 음수로는 -1~-128까지 사용이 가능하게 되는 것이죠.
후 어렵죠?
우리는 맨 왼쪽 칸을 부호를 나타내는 값으로 하여 양수와 음수를 나눠 표현하겠다 하면 signed라고 하며,
부호를 나타낼 필요 없이 0과 양수만을 사용할 거니, 맨 왼쪽도 숫자를 나타내는데 쓰겠다 하면 unsigned 라고 합니다.
이는 다음 4편에서 자료형의 종류에 대해서 공부할 때 꼭 알고 계셔야 하는 내용이니 꼭 숙지하고 넘어가주시기 바랍니다.