c_2

2022. 5. 8. 20:12c,c++ 기본/진짜 기본

320x100
안녕하세요 대학생개발자입니다.

 

이번글은 저번글에 이어서 C언어에대한 기본 두번째 글입니다.

 

사실 C언어라는게 막상 접해보면 그렇게 어렵지 않은데 많은분들이 어려운줄 알고계셔요

그래서 어떻게하면 쉽게 설명할 수 있을까 고민하며 적고있습니다.

 

이번글에서는 자료형에 대한 얘기와 함께 데이터가 실제 어떻게 저장되는지에 대한 얘기를 좀 해볼겁니다.

자료형은 간단히 말하면 어떤 방식으로 이 데이터를 저장할거냐 혹은 표현할거냐 입니다.

 

저 방식이라는 것에는 다양한게 존재할수있는데요.

첫번째로 데이터를 크기에 따라 나누는 방법이 있습니다.
두번째로 데이터의 종류에 따라 나누는 방법이 있습니다.

 

먼저 데이터를 크기에 따라 나누는 방법인데요

 

여러분이 계산기를 사려고 한다고 생각해봅시다.

난 3자리 이상의 연산을 할일이 없는데 8칸이 있는 계산기와 4칸이 있는 계산기가 있을때 8칸짜리 계산기가 만원이고 4칸짜리 계산기가 3천원이라면 당연히 여러분은 필요와 가격 타당성등을 고려해서 4칸짜리를 구매하실거에요.

이 부분에서 본다면 타입또한 똑같습니다.

 

먼저 나는 0~100까지만 저장할 수 있는 공간만 있으면 된다고 하면

7개의 비트면 충분하겠죠.

하나의 비트가 2개의 값을 표현할 수 있으니

7개라면 2^7개 즉 128개의 값을 표현할 수 있는 7개의 비트만 있다면 표현할 수 있습니다.

그러니 우리에겐 7비트 이상의 큰 수는 필요가 없는거죠.

 

이런 방면으로 본다면 우리는 데이터의 크기에 따라서 타입을 나누는 것이 필요할 것 같다는 생각이 듭니다.

 

 

다시 돌아와서 우리는 1바이트 단위의 공간을 요구할 수 있습니다.

그럼 2바이트도 가능하냐? 네 가능합니다.

바이트 단위라면 우리가 원하는만큼 할당받을 수 있습니다.

 

그리고 우리가 매번 1000까지 숫자를 담아야지... 10000까지 숫자를 담아야지 하며 바이트단위로 요구를 하는건 그렇게 썩 예쁜 모양세는 아니니 기본적으로 제공되는 타입이 존재합니다.

 

아마 개발 도구를 한번이라도 켜보셨다면 int main() 이라는걸 보셨을거에요

여기서 int는 우리가 자주 사용하게될 정수형 변수이고 크기는 4바이트입니다.

즉 2^32개의 수를 표현할 수 있는 크기입니다.

 

물론 아주 작은 값을 표현하기 위해서 32비트를 쓰는것은 그닥 좋지 않은 모양이긴합니다.

그래서 정수형으로는 다음과 같은 자료형들이 제공되고 있습니다.

char 1바이트 정수표현
short 2바이트 정수표현
int 4바이트 정수표현
long 4바이트 정수표현
long long 8바이트 정수표현

아... 별거없죠??

얘내들은 다 정수를 표현할 때 쓰이는 녀석들입니다.

 

뭐 물론 저기에 조건이 있긴합니다.

int는 최소한 2바이트는 되어야 하지만 그 이상일수도있고 그 이하일수도 있다.

최소한 short보다는 int의 크기가 커야한다... 와같은 룰들이 몇가지 있지만, 중요하지 않습니다.

그냥 int는 4바이트다 라고 암기하셔도 일반적인 상황에서는 큰 문제없을 것 같습니다.

 

혹여나 int의 사이즈가 바뀐다고 하더라도 걱정마세요 sizeof라는 연산자가 있고

이 연산자는 그 타입의 크기를 알려주거든요

sizeof(type) 과같이 사용하시면 되니까 혹시나 사이즈를 모르겠다? 그러면 바로 sizeof를 들이밀어 보세요.

 

어... 이걸 보다보니 궁금한 사항이 있을겁니다.

왜 3바이트는없어요? 왜 7바이트는 없어요? 와같은거죠...

이 이야기를 하려면 좀 더 아랫 단계에서의 효율성에 대한 부분을 언급해야되서 이부분도 next step 섹션으로 가시면 확인 하실수 있습니다.

 

두번째로 1바이트 이내의 값은 요구를 못하나요?? 라는 질문을 하실수도 있을 것 같아요

컴퓨터가 데이터를 처리할때 최소 단위는 바이트인데요.

하나의 바이트는 비트가 8개 즉 8비트가 1바이트가 되는거에요

그러니까 우리는 가장 작은 단위가 8비트가 되는겁니다.

물론 비트단위로 쪼개서 쓸수있는것도 있긴하지만 실제 요구는 결국 바이트 단위로 해야할 뿐 아니라,

지금 단계에서 말씀드리기엔 약간의 무리가 있으니까...

그런다고 아얘 소개를 안하는건 아니고 next step 섹션에서 확인하실수 있습니다.

 

그러니 어서 C언어의 기본을 마스터 하고나서 넘어가보자구요

 

정수형 타입이 많아서 참 좋습니다.

하지만 세상은 정수와 같은 깔끔한 수로 이뤄져있지 않죠.

실수와 같은 소수를 표현하기 위한 타입도 준비되어 있습니다.

float 4바이트 소수표현
double 8바이트 소수표현
long double 8바이트 이상의 소수표현(개발 환경에따라 달라질수있음)

뭐... 따로 말씀드릴게없어요.

정수와 똑같은 이유입니다.

내가 필요한 실수를 표현하는데 필요한 크기만큼만 써라입니다.

내가 아주 정밀한 소수 값을 필요로한다? double 쓰시면됩니다.

하지만 그렇게 정밀하지 않아도 상관없다? float로 가볍게 쓰시면됩니다.
 

제가 설명을 아주 못하고있는데요...

이걸 어떻게 설명할 수 있는게 아니라 그냥 아 그렇구나 하고 받아들이셔야 하는 부분이거든요ㅠㅠ

float가 4바이트인데 왜 4바이트냐고 물으시면 할말이 없어요. 그렇게 정해졌기 때문이에요...

 

 

제가 글을 적기위해서 오랜시간 공을 들이지 않는데...

이건 제가 보려고 적는게 아니라 다른분들을 위해서 적는글이다보니ㅠㅠ

오랜시간 어떻게 표현을 해야할지 고민을 하면서 적고있습니다...

 

그럼에도 불구하고 내용이 썩 그렇게 만족스럽진 않네요...

추후에 내용을 보강하는 방향으로 가겠습니다.

그럼 긴글 읽어주셔서 감사합니다.

안녕히계세요

320x100

'c,c++ 기본 > 진짜 기본' 카테고리의 다른 글

c_4  (0) 2022.05.10
c_3  (0) 2022.05.10
c_1  (0) 2022.05.04