Type 에 대해서 설명하기에 앞서 먼저 bit와 byte 에 대해서 설명하도록 하겠다.

1. Bit
bit란, 0,1 로 표현되는 숫자를 말한다. 즉, 2진수(binary)로 나타냈을 때의 한자리(digit)이다.

bit 를 표기할때는 임의로 |0| 이렇게 표기하도록 하며, 이뜻은 1bit 를 의미한다.

8bit 는 |00000000| 이런식으로 표기가 되겠다.

1bit 로는 2가지 상태를 나타낼수 있다. (|0| 또는 |1|)

2bit 로는 4가지 상태를 나타낼수 있다.(|00|, |01|, |10|, |11|)

3bit 로는 몇가지? 답은 8가지 이다.

계산 하는 방법은
n 일때 만들수 있는 가지수는
2n 가지가 되겠다.

x86 이라는 얘기를 한번쯤은 들어봤을 것이다. 그리고 x86은 32bit 라는 말도 들어봤을것이다.

32bit 라면, |0000 0000 0000 0000 0000 0000 0000 0000| 를 나타낼수 있다는 것이다.

cpu 를 한번쯤이라도 본사람이면 cpu 에 핀이 많이 달려있는것을 볼수 있다. 그 핀 하나가 각 한 bit 를 가진다고 보면
32bit cpu 는 한번에 처리할수 있는것이 32bit 란 말이 된다.

2. Byte
byte 는 bit 가 8개 모인것이다. 즉, |00000000| 은 1byte 이다.
1byte 로 나타낼수 있는 가지수는 256가지이다. (28)
10진수로 나타내보면 0 ~255 가 될것이다.

그러면 32bit는 4byte 가 된다.

KiloByte 는 210byte 가 되고
MegaByte 는  210 Kilobyte 이런식으로 나타낸다.

그럼 32bit 로 나타낼수 있는 메모리는 각 메모리당 1byte 씩 저장한다고 하면, 232 = 4GigaByte 가 된다.

그러므로 32bit OS 에서 인식할수 있는 최대 메모리는 4GB 가 된다.

3. Hexadecimal
Hexadecimal 은 16진수이다.
0~9, A~F 16개를 가지고 수를 표현한다.
F 는 10진수로 15를 나타낸다.

2진수를 10진수로 16진수로 변환하는 설명은 생략하도록 한다.

16진수하나는 몇 비트가 필요할까?   정답은 4bit 이다. (0~15 는 16가지 이고 16가지를 나타낼려면 4bit 가 필요하다.)
4bit 를 다른말로 Nibble 이라고 한다. 16진수 한자리가 1 Nibble 이 된다.

1byte 는 2자리의 16진수로 이루어져 있다. 그래서 보통 0xFF 혹은 0xff 로 표기한다.

그래서 메모리 주소를 표기할때 0xbfffffa0 이런식으로 4byte 로 나타낸다.(32bit OS 에서 메모리는 4byte 이므로)

데이터가 저장될때는 바로 2진수로 표기가 된다.
이 저장된 데이터를 hex 코드로 보게 되면 aa ff bf 이런식으로 볼수 있게 된다.

이 데이터가 저장될때 영문자는 ascii code 형식으로 저장이 된다.(1byte 소모)
한글은 2byte code 나 utf8 형식으로 저장이 될것이다.

여기까지 알수 있다면

이제 다음에 설명할 Type 과 bit 연산에 대해서 별 어려움 없이 이해하리라 본다.



+ Recent posts