개발자를 위한 2진수 및 16진수 설명
게티 이미지
2진수와 16진수 시스템은 현대 컴퓨터 시스템이 작동하는 방식을 뒷받침합니다. 16진수(16진수) 및 2진수와의 낮은 수준 상호 작용은 Java 프로그래밍 세계에서는 흔하지 않지만 소프트웨어 개발자는 때때로 비트 및 바이트 수준에서 작업을 수행합니다. 대체 숫자 시스템이 어떻게 작동하는지 이해하는 능력은 다재다능한 소프트웨어 개발자가 갖추어야 할 중요한 기술입니다.
16진수나 2진수로 작업하는 것은 일상 생활에서 사용되는 10진법 숫자 시스템에 비해 이상하고 혼란스러울 수 있습니다. 로켓 과학은 아니지만 숫자와 숫자에 대해 생각하는 방식을 조정해야 합니다. 다음 이진수 및 16진수 예제에서는 십진수 기반 숫자 시스템에 대한 이러한 대안이 어떻게 작동하고 동작하는지 설명합니다.
실제 사례를 통해 2진수와 16진수 체계를 이해해 보겠습니다.
숫자 500을 생각해 보십시오. 숫자 체계에서 각 숫자는 밑의 거듭제곱을 나타냅니다. 10진법 숫자 시스템의 경우 각 숫자는 10의 거듭제곱을 나타냅니다. 다음은 10진법이 숫자 500을 설명하는 방법입니다.
수백
수십
것들
102
101
100
5
0
0
위 표에서 가장 왼쪽 열은 100의 단위(102)를 설명하고, 가운데 열은 10의 단위(101)를 설명하며, 가장 오른쪽 열은 1의 단위(100)를 설명합니다. 따라서 10진수로 된 500의 값은 100의 5개 단위, 10의 0개 단위, 1의 0개 단위를 모두 더한 것으로 표현할 수 있습니다.
10진수는 인간에게 적합하지만 켜짐 및 꺼진 에너지 상태를 다루는 이유로 컴퓨터는 2진수 시스템을 사용합니다. 2진수 또는 이진수를 사용하면 모든 숫자는 2의 거듭제곱을 나타내며 숫자는 0과 1이라는 두 숫자로만 설명됩니다. 아래 표는 500 값의 이진수에서 십진수로의 변환을 보여줍니다.
십진수로 표현된 지수 값
256
128
64
32
16
8
4
2
1
28
27
26
25
24
23
22
21
20
1
1
1
1
1
0
1
0
0
(참고: 20개 단위 = 1)
따라서 50010 = 1111101002입니다. 또는 2진수의 자릿수 기준: 500 = (256 + 128 + 64 + 32 + 16 + 0 + 4 + 0 + 0)
이진법에서 숫자를 계산하는 데에는 두 가지 규칙이 더 있습니다. 첫째, 디지털 컴퓨팅 세계에서는 2진수의 각 숫자를 비트라고 합니다. 따라서 다음 숫자는 000, 001, 011, 100, 101, 110 및 111의 3비트 값을 나타냅니다. 마찬가지로 8자리 숫자는 11110000 및 11111111과 함께 10101010과 같은 8비트 값입니다.
둘째, 비트는 바이트라는 조직 단위로 함께 그룹화됩니다. 일반적으로 바이트는 숫자 10101010과 같이 8비트 그룹입니다. 프로토콜 버퍼와 같은 일부 기술에서는 바이트를 7비트 그룹으로 구성하지만 8비트를 바이트로 그룹화하는 것이 일반적입니다.
이진 표기법을 사용하여 비트와 바이트로 작업하는 것은 시각적 수준만으로는 어려울 수 있습니다. 이진 표현 1001001011011001을 생각해 보세요. 그 긴 숫자는 누구의 두뇌로도 해독하기 어렵습니다.
2진수는 겁나게 길 수 있지만 16진수는 정반대입니다. 16진수는 2진수와 10진법 숫자 체계보다 더 적은 숫자로 숫자를 나타냅니다.
16진법에 대해 가장 먼저 이해해야 할 것은 16개의 숫자로 구성되어 있다는 것입니다.
0 1 2 3 4 5 6 7 8 9 ABCdef
모든 숫자 체계에서 각 숫자는 밑의 거듭제곱을 나타냅니다. 10진수 시스템에서 숫자 10은 101의 한 단위와 100의 0 단위를 나타냅니다. 16진수 시스템에서 숫자 10은 아래 표에 표시된 대로 숫자 16의 거듭제곱을 나타냅니다.
십진수로 표현된 지수 값
65,536
4,096
256
16
1
164
163
162
161
160
따라서 10진수 10은 10진수로 10의 값을 나타내는 반면, 16진수에서는 숫자 10이 16으로 변환됩니다. 변환을 다음과 같이 설명할 수 있습니다.