본문 바로가기

Learn & Develop/C

C언어 - 2진수와 16진수

10진수

 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 까지 표현, 9 다음으로는 자릿수를 올려 쓴다. (10진법)

 

 

 

2진수

 0, 1로 표현, 1 다음으로는 자릿수를 올려 쓴다. (2진법)

ex) 0, 1, 10, 11, 100, 101, 110, 111, 1000 ... ... 

    10진법으로 표현 시, '0, 1, 2, 3, 4, 5, 6, 7, 8 ... ...'과 대응된다.

 

 2의 n제곱마다 뒤에 공이 n개씩 늘어난다.

ex) 2의 0제곱 = 1 >> 1

    2의 1제곱  = 2 >> 10

    2의 2제곱  = 4 >> 100

    2의 3제곱  = 8 >> 1000 ... ...

 

 0과 2를 제외한, 2의 배수(짝수)일 경우 뒷 숫자는 반드시 0이다.

ex) 2 * 2 = 4 >> 100

    2 * 3  = 6 >> 110

    2 * 4  = 8 >>1000

    2 * 5  = 10 >> 1010 ... ...

 

 그럼 110110을 10진수로 표현하면 몇인가?

  100000 + 10000 + 100 + 10

   == 2^5 + 2^4 + 2^2 + 2*1 = 32 + 16 + 4 + 2 = '54' 가 된다. 

 

 

 

16진수

 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f로 표현, f 다음으로는 자릿수를 올려 쓴다. (16진법)

ex) 19, 1a, 1b, 1c, 1d, 1e, 1f ... ...

     10진법으로 표현 시, '25, 26, 27, 28, 29, 30, 31 ... ...'과 대응된다.

 

 16의 n제곱마다 뒤에 공이 n개씩 늘어난다.

ex) 16의 0제곱 = 1 >> 1

    16의 1제곱  = 16 >> 10

    16의 2제곱  = 256 >> 100

    16의 3제곱  = 4096 >> 1000 ... ...

 

 16진수에서 십의 자리, 또는 그 이상의 수가 n일때,  10진수로 바꾸면 16n이 된다.

ex) e0 = 16*14

     f0 = 16*15

     100 = 16*16

     110 = 16*16 + 16*1

 

 그럼 1ff를 10진수로 표현하면 몇인가?

  (16^2)*1 + (16^1)*15 + (16^0)*15

   == 256 + 240 + 15 = '511' 이 된다.

 

 

아직은 많이 미숙해서 틀린 점 있을 수 있습니다.

오타, 지적 환영합니다.