[이번엔 까먹지 말자] int와 long 구분하기 / bit와 Byte에 대해
IT/공부자료

[이번엔 까먹지 말자] int와 long 구분하기 / bit와 Byte에 대해

int,long 타입을 구분하기를 무서워하는 저를 발견하여, 글을 작성하기로 하였습니다.

먼저,  bit와 byte에 대한 이해가 약한 것 같으니 bit부터 살펴보겠습니다.

 

bit 뭘까요

모든 데이터는 0과 1의 조합으로 표현할 수 있습니다. 

쉽게 전구의 불을 on / off 하는  2가지의 경우의 부터 시작되는거죠.

1bit는 0과 1로 이루어져있고, 데이터를 표현하는 가장 최소의 단위입니다. 

 

int 는 4byte 메모리를 사용합니다.

그럼, 4byte는 몇 bit로 이루어져 있을까요?  


생각해보시고 펼쳐보세요!

더보기

4byte는 1byte x 4 = 8bit x 4 = 32bit로 이루어져 있습니다. (1byte 당 8bit)

 

32bit에서 1bit 표현 있다했죠?

 

0과 1 딱  가지만 표현할 수 있습니다.

경우의 수가 2가지인 데이터들을 1bit 표현할 수 있다는 것입니다.

(전구의 on/off , tv on/off 등)

 

잠깐, 다들 아시죠?

컴퓨터는 0과 1로 이루어져있다고 해도 과언이 아닙니다.
우리가 한국어를 사용하듯이, 컴퓨터는 0 1 이루어진 바이너리 숫자만 사용하고 이해할 있습니다.

 

우리가 지금 사용하는 컴퓨터,노트북 내에서는 열심히 우리가 쏟아내는 문자들을 0과 1로 번역하는 과정을 거치고 있겠죠?

컴퓨터 내에서 모든 연산과 데이터들을 이진수(0과 1)로 번역해서 (어디론가,,,)보내주는 과정을 거치게 됩니다. 

 

근데 세상에는 2가지 경우의 수보다 더 복잡한 경우들이 너무나 많습니다.

그럼 이 복잡한 경우를 표현하기 위해서는 어떻게 해야할까요??

"더 큰 숫자를 표현하려면?"  /  "더 많은 경우의 수를 갖기 위해서는?"

1bit 여러 모아서 표현을 하는 것이에요.

예를 들어, (이진수 표기는 생략하겠습니다)



0은 0

1은 1

--------1자리 

2는 10 

3은 11

--------2자리

4는 100

5는 101 ... 
--------3자리...

 

다들 보시다시피 숫자를 사용하는 비트의 가 늘어나고 있는게 확인이 되시나요?

1bit 로는 0 / 1  

2bit 로는 00 / 01 / 10 / 11 이 가능하다는거 확인하셨죠.

점점 사용할 있는 숫자도 많아지면서 동시에 많은 경우의 수도 표현  있다는 거죠.



그렇다면, 좀  늘려서 64를 bit로 표현해볼까요? 저는 64에서 그치지만, 여러분은 욕심내어 더 큰 숫자를 한 번 bit로 표현해보세요! 



64 는 1000000 bit 으로 표현할 수 있습니다.

즉, 이런 식으로 여러bit가 모여서 더 큰 숫자를 표현할 수 있습니다.

"bit 많다는건 == 숫자를 표현할 있다" 라고 생각해볼 수 있겠네요.

 

이제 다시 위에서 살펴본 int를 살펴볼게요. 

int 는 4byte

4bye는 32bit

1byte 당 8bit 00000000 / 32bit는 00000000 00000000 00000000 00000000

 

이 공간들을 사용하여 나타낼 수 있는 메모리의 범위는 다음과 같습니다. 

양수의 경우해당될 경우는 0부터 4,294,967,295 ( 40)

음수의 경우 : −2,147,483,648부터 2,147,483,647( 20)

 

아~ 예를 들어, int[] 배열의 크기가 20억을 넘어간다면, 그 때는 int가 아닌 long타입을 사용해야겠네요!

 

앞으로 메모리의 크기에 민감해져야겠어요.

오늘은 메모리의 범위에 대해서 알아보았으니, 다음 번에는 연산횟수에 따른 시간에 대해서 알아보겠습니다.

(맛보기 : 실행횟수 1억(100,000,000)당 대략 1초라고 계산을 한다고 한다.)



읽어주셔서 감사합니다!

저도 많이 부족해서 정말 혹시나 잘못된 정보가 있거나, 자신의 의견을 더하고 싶으실 때 자유로운 코멘트 환영합니다.