일단 시작하는 IT개발 블로그
  • 2진법과 16진법, 그리고 10진법.
    2022년 02월 25일 00시 13분 50초에 업로드 된 글입니다.
    작성자: sooooong_minseok

    컴퓨터의 기본 언어는 0과 1이라고 할 수 있다.

    0과 1은 하나의 비트를 의미한다. 비트 8개가 모여 1바이트를 형성한다.

     

    1비트(0,1)는 두 가지 중 하나의 값을 저장할 수 있다.

    2비트(0,1,2,3)으로 4가지

    3비트는 8가지

    4비트는 16가지의 값 중 하나를 저장할 수 있다.

     

    만약 2진법 활용한다면 1비트 단위의 값으로 나타낼 수 있다.

    하지만 16진법을 활용한다면 4비트 단위로 훨씬 넓은 범위의 값을 나타낼 수 있다.

    그래서 16진법을 변환해서 사용하면 여러모로 쓰임이 좋다.


    2진법과 16진법을 서로 변환하는 방법에 대해 알아보자. 

    아래 표는 4비트 단위의 2진수와 한자리 수의 16진수를 적은 표이다.

    10진수 2진수 16진수
    1 0001 1
    2 0010 2
    3 0011 3
    4 0100 4
    5 0101 5
    6 0110 6
    7 0111 7
    8 1000 8
    9 1001 9
    10 1010 a
    11 1011 b
    12 1100 c
    13 1101 d
    14 1110 e
    15 1111 f
    16 10000 10

     

    2진법 <-> 16진법 변환하는 방법.

    위 표의 4비트 단위로 쪼개어 표시된 것을 그대로 표기하면 된다.

    예. 1110/1001이라는 숫자를 16진법으로 전환해보자.

    1110/1001 = 0xE9 이다. 

    맞는지 10진법으로 전환하고 비교해보자!
    2^0x1 = 1

    2^1x0 = 0

    2^2x0 = 0

    2^3x1 = 8

    2^4x0 = 0

    2^5x1 = 32

    2^6x1 = 64

    2^7x1 = 128 합 = 1+8+32+64+128 = 233

     

    0xE9 

    14(E)x16^1 + 9 = 233

     

     >> 값이 같음을 알 수 있다.

     

     

    예2. 0xEA이라는 숫자를 2진법으로 전환해보자.

    0xEA = 1110/1010이다.

    맞는지 10진법으로 전환하고 비교해보자.

    14(E)X16^1 + 10(A)X16^1 = 224 + 10 = 234

     

    2^0x0 = 0

    2^1x1 = 2

    2^2x0 = 0

    2^3x1 = 8

    2^4x0 = 0

    2^5x1 = 32

    2^6x1 = 64

    2^7x1 = 128 합 = 1+8+32+64+128 = 234

     

    값이 같음을 알 수 있다.

     

    위 표를 잘 암기 또는 이해해두면 2진법과 16진법을 쉽게 전환하여 이해할 수 있다.

    앞으로 포인터 개념에서 많이 쓰인다고 하니 잘 이해해서 활용할 수 있도록 하자.

     

     

    번외.(10진법 <->2진법, 16진법<->10진법)

    1. 10진법 <->2진법으로 변환하는 방법. (이하 2진수는 모두 4비트 단위로 적음)

    예. 30이라는 숫자를 2진법으로 전환해보자.

    30 / 2 = 15 ... (나머지) 0

    15 / 2 = 7 ... 1

    7 / 2 = 3 ... 1

    3 / 2 = 1 ... 1

    거꾸로 올라가게 써서 0001/1110 = 30 이다.

     

    위와 같은 방식 외에도 간단하게 암산을 하는 방법이 있다.

    2^0 = 1

    2^1 = 2

    2^2 = 4

    2^3 = 8

    2^4 = 16

    2^5 = 32

    2^6 = 64

    2^7 = 128

    2^8 = 256

    2^9 = 512

    2^10 = 1024

    를 외워둔다.

     

    예를 들어 30이라는 숫자라면,

    2^4 = 16  //  30-16 = 14    >>1

    2^3 = 8  //  14-8 = 6   >>1

    2^2 = 4  //  6-4 = 2   >>1

    2^1 = 2  // 2-2 = 0   >>1

    딱 떨어짐  0

    0001/1110이라는 숫자가 나옴.

     

    >>다시 2진수에서 10진수로 바뀌려면

    0001/1110

    첫째 자리 수부터

    2^0x0 = 1

    2^1x1 = 2

    2^2x1 = 4

    2^3x1 = 8

    2^4x1 = 16  합 = 30이다.

     

    2. 10진법 <->16진법으로 변환하는 방법.

    예. 63이라는 숫자를 16진법으로 전환해보자.

    63 / 16 = 3 ... 15(16진법에서 F)

    3F

     

    >>다시 16진수에서 10진수로 바뀌려면

    63

    16^1 X 3 + 16^1 X 15 = 63

     

     

     

    댓글