인프런 커뮤니티 질문&답변

박정민님의 프로필 이미지
박정민

작성한 질문수

홍정모의 따라하며 배우는 C언어

3.8 8진수와 16진수

16진수에 대한 설명

작성

·

635

1

<3.8 8진수와 16진수>

강의에서 16진수에 대해 설명하시면서

unsigned int의 최댓값을 각각 10진수, 2진수, 8진수, 16진수로 나타내주셨습니다.

16진수의 표현에서 f가 8개인 이유는 16이 2의 4제곱이기 때문이라고 하셨는데 해당 설명의 메커니즘이 잘 이해가 되지 않아 질문드립니다.

수강 후 공부해본 결과, 2진수 1111이 16진수에서 f 하나에 해당하기 때문에, 해당 unsigned int의 최댓값인 2진수의 32비트는 나누기 4를 하여 16진수에서 8자리가 나타난다는 것은 이해를 하였습니다.

그러나 16이 2의 4제곱이라서 8개의 자리만 있으면 된다는 설명에 대해선 이해가 어려워 조금 더 구체적으로 알려주시면 감사하겠습니다.

답변 1

1

안녕하세요, 답변 도우미 Soobak 입니다.

먼저, 각 진법의 변환에 대해서 요약하여 설명드린 후,
질문주신 " 1624 제곱이라서, 8개의 자리만 있으면 된다" 라는 내용에 대해서 설명드리도록 하겠습니다.

  • 16진수와 2진수의 관계
    : 16진수 1 자리수는 2진수 4 자리수로 표현될 수 있습니다.
    이유는 다음과 같습니다.
    16진수의 한 자리는 0 ~ F 을 통해 표현됩니다.
    이 때, 각 16진수의 1 자리 숫자를 2진수로 표현하면 다음과 같습니다.

    • 0 = 0000 (2진수)

    • 1 = 0001 (2진수)

    • 2 = 0010 (2진수)

    • ...

    • E = 1110 (2진수)

    • F = 1111 (2진수)

    즉, 16진수 한 자리를 모두 온전히 표현하기 위해서는 최소 2진수 4 자리(4비트)가 필요합니다.

 

  • unsigned int 의 최댓값 표현

    : 32 비트의 unsigned int 를 16진수로 표현하기 위해서는,
    말씀하신 것 처럼 324로 나눈 8 개의 자리수가 필요합니다.

    이 과정을 조금 더 자세히 살펴보면 다음과 같습니다.

    • unsigned int32 비트의 데이터를 저장할 수 있으므로, 이를 2진수로 나타내면 최댓값은 다음과 같습니다.
      : 11111111 11111111 11111111 11111111

      이를 16진수로 변환하는 과정을 조금 더 쉽게 바라보기 위해 4 비트 단위로 끊어서 표현해보면 다음과 같습니다.
      : 1111 1111 1111 1111 1111 1111 1111 1111

      이제, 이 각 4 비트 단위를 16진수로 변환하면,
      : F F F F F F F F 과 같이 표현됩니다.

       

즉, 이렇게 16 진수 1 자리가 2진수 4 자리로 표현될 수 있기 때문에,
32 비트의 2진수는 8 자리의 16진수로 표현될 수 있는 것입니다.

박정민님의 프로필 이미지
박정민

작성한 질문수

질문하기