🍒 Language/C

[C] 16진수 접두어 0x와 컴퓨터에서 사용하는 이유

후추 집사 2023. 1. 25. 14:15

16진수

16진수 표현: 0x, 2진수 표현: 0b

  • 16진수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 로 숫자를 나타낸다.
    • 0에서 9까지는 10진수와 값이 동일하고, A는 10, B는 11, C는 12, D는 13, E는 14, F는 15를 나타낸다.
    • 즉 16진수에서는 한자리 수로 0에서부터 15까지 표현할 수 있다.
  • 그런데 위에서 보다시피, 0에서부터 9까지는 10진수와 동일한 값이라서 10진수와 헷갈릴 우려가 있다.
    • 그래서 16진수에서는 모든 수 앞에 0x 를 붙인다.
    • 이건 아무런 의미가 없고 그냥 16진수라는 뜻으로 붙인다.
    • 예를 들어 16진수의 0은 0x0 으로 표기한다.
  • 그렇다면 이해를 돕기 위해 2진수를 16진수로 바꾸어보자.
    • 8비트가 나타낼 수 있는 가장 큰 수는 255이다. 2진수로는 11111111이다. 4비트씩 끊어서 보자. 4비트는 0에서부터 최대 15까지 나타낼 수 있다. 즉, 16진수가 나타낼 수 있는 한 자리수와 동일하다. 즉 11111111을 앞 부분의 1111과 뒷 부분의 1111로 나누어서 각각 십진수 값 15에 해당하는 F를 주면 FF가 된다. 그리고 마지막으로 0x를 붙여 16진수임을 표기하면 0xFF가 된다.

 

16진수 표기를 사용하는 이유

  • 16진수 표기 사용하는 이유: 컴퓨터의 메모리 구조
  • 컴퓨터는 2진수로 동작한다.
    • 즉, 메모리 구조가 2의 배수이다.
    • 최소 기억단위(레지스터)는 8bit(1byte)이므로, 변수를 기억하기 위해서는 1byte 이상을 사용한다.
    • 255 이하의 숫자는 1byte로 기억.
  • 이때, 10진수보다는 16진수에 친숙하다.
    • 16진수 0xFF=255.
    • 0x00 ~ 0xFF => 1바이트로 표현하는 종류
    • 0x0000 ~ 0xFFFF => 2바이트로 표현하는 종류
    • 16진수를 사용하면 8비트(1바이트)씩 단위가 맞게 떨어져서 사용하기가 좋다.

 

참고

https://ssinyoung.tistory.com/3