장 – 4
숫자 체계
소개
데이터 복구 프로그래밍 또는 기타 디스크 문제 해결 프로그래밍에서 단일 작업 또는 확장 MBR의 특정 위치 계산과 같은 매우 작은 작업을 수행하기 위해 동시에 다른 유형의 번호 시스템을 처리하는 것은 매우 일반적입니다. CHS(Cylinders, Heads and Sectors) 및 이러한 위치는 작업 전반에 걸쳐 프로그래머를 안내합니다.
아마도 대부분의 초보 프로그래머는 어셈블리 언어 기반 시스템 수준 프로그래밍을 배우려고 할 때 그리고 2진수 및 16진수 시스템을 사용해야 하는 경우 서로 다른 유형의 숫자 시스템을 서로 변환하는 동안 문제 또는 혼동에 직면할 것입니다.
이 장에서 우리는 2진법, 10진법, 16진법 시스템을 포함한 많은 중요한 개념과 비트, 니블, 바이트, 워드, 더블 워드 등의 변환과 같은 이진 데이터 구성 및 기타 많은 관련 주제에 대해 논의할 것입니다. 숫자 체계.
대부분의 최신 컴퓨터 시스템은 10진수 시스템을 사용하여 숫자 값을 나타내지 않지만 일반적으로 2진수 또는 2의 보수 시스템을 사용합니다.
프로그래밍에 일반적으로 사용되는 네 가지 숫자 기반이 있습니다. 2진법, 8진법, 10진법 및 16진법입니다. 그러나 대부분의 경우 우리는 2진법, 10진법 및 16진법 숫자 체계를 만나게 됩니다. 이 번호 체계는 기본 번호에 따라 구분됩니다.
모든 번호 체계에는 고유한 기본 번호와 표시 기호가 있습니다. 다음 표에 이 네 가지 숫자를 제시했습니다.
Name of Number System |
Base Number |
Symbol Used for Representation |
Binary |
2 |
B |
Octal |
8 |
Q or O |
Decimal |
10 |
D or None |
Hexadecimal |
16 |
H |
10진수 시스템
10진수 체계는 10진수를 사용하며 0부터 9까지의 숫자를 포함합니다. 혼동하지 마십시오. 우리가 일상 생활에서 사물을 계산하는 데 사용하는 일반적인 숫자 체계입니다. 각 위치에 대한 거듭제곱 가중치 값은 다음과 같습니다.
이런 식으로 십진수 218이 있고 위의 방식으로 표현하려는 경우 숫자 218은 다음과 같은 방식으로 표현됩니다.
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
이제 분수 소수의 예를 들어 보겠습니다. 821.128이라는 숫자가 있다고 합시다. 소수점 왼쪽에 표시되는 각 숫자는 0에서 9 사이의 값을 나타내며 10의 거듭제곱은 숫자에서 해당 위치(0부터 시작)로 표시됩니다.
소수점 오른쪽에 표시되는 숫자는 0과 9 사이의 값을 10의 증가하는 음의 거듭제곱으로 나타냅니다. 방법:
8 * 102 + 2 * 101 + 1 * 100 + 1 * 10-1 + 2 * 10-2 + 8 * 10-3
= 8 * 100 + 2 * 10 + 1 * 1 + 1 * 0.1 + 2 * 0.01 + 8 * 0.001
= 800 + 20 + 1 + 0.1 + 0.02 + 0.008
= 821.128
이진수 시스템
오늘날 대부분의 현대 컴퓨터 시스템은 이진 논리를 사용하여 작동합니다. 컴퓨터는 0과 1을 사용하여 OFF 또는 ON을 나타내는 두 가지 전압 레벨을 사용하여 값을 나타냅니다. 예를 들어 전압 0V는 일반적으로 로직 0으로 표시되고 +3.3V 또는 +5V 전압은 로직 1로 표시됩니다. 따라서 두 레벨을 사용하여 정확히 두 개의 다른 값을 표시할 수 있습니다. 두 개의 다른 값이 될 수 있지만 규칙에 따라 0과 1 값을 사용합니다.
컴퓨터가 사용하는 논리 수준과 이진 번호 체계에서 사용되는 두 자리 사이에 대응 관계가 있기 때문에 컴퓨터가 이진 시스템을 사용하는 것은 놀라운 일이 아닙니다.
2진법은 2진법을 사용하고 숫자 0과 1만 포함한다는 점을 제외하고는 10진법과 같이 작동하며 다른 숫자를 사용하면 숫자가 유효하지 않은 이진수가 됩니다.
각 위치에 대한 가중치는 다음과 같이 표시됩니다.
다음 표는 십진수에 대한 이진수의 표현을 보여줍니다.
Decimal Number |
Binary Number Representation |
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
10 |
1010 |
11 |
1011 |
12 |
1100 |
13 |
1101 |
14 |
1110 |
15 |
1111 |
일반적으로 10진수의 경우 3자리마다 쉼표로 구분하여 큰 수를 읽기 쉽도록 합니다. 예를 들어, 840349823보다 840,349,823을 읽는 것이 훨씬 쉽습니다.
같은 아이디어에서 영감을 얻어 이진수에 대한 유사한 규칙이 있으므로 이진수를 더 쉽게 읽을 수 있지만 이진수의 경우 최하위 숫자부터 4자리마다 공백을 추가합니다. 소수점 왼쪽.
예를 들어 이진 값이 1010011001101011이면 1010 0110 0110 1011로 작성됩니다.
2진수를 10진수로 변환
2진수를 10진수로 변환하려면 각 자릿수에 가중치 위치를 곱하고 가중치 값을 각각 더합니다. 예를 들어, 이진 값 1011 0101은 다음을 나타냅니다.
1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20
= 1 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1
= 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1
= 181
10진수에서 2진수로 변환
10진수를 2진수 시스템으로 변환하려면 일반적인 방법은 10진수를 2로 나누고 나머지가 0이면 측면에 0을 기록하는 것입니다. 나머지가 1이면 1을 기록합니다.
이 과정은 몫을 2로 나누고 몫이 0이 될 때까지 이전 나머지를 삭제하여 계속됩니다. 나누기를 수행할 때 십진수에 해당하는 이진수를 나타내는 나머지는 최하위 자릿수부터 시작하여 기록됩니다. (오른쪽) 그리고 각각의 새로운 숫자는 이전 숫자의 더 중요한 숫자(왼쪽)에 기록됩니다.
예를 들어 보겠습니다. 숫자 2671을 고려하십시오. 숫자 2671에 대한 이진 변환은 다음 표에 나와 있습니다.
Division |
Quotient |
Remainder |
Binary Number |
2671 / 2 |
1335 |
1 |
1 |
1335 / 2 |
667 |
1 |
11 |
667 / 2 |
333 |
1 |
111 |
333 / 2 |
166 |
1 |
1111 |
166 / 2 |
83 |
0 |
0 1111 |
83 / 2 |
41 |
1 |
10 1111 |
41 / 2 |
20 |
1 |
110 1111 |
20 / 2 |
10 |
0 |
0110 1111 |
10 / 2 |
5 |
0 |
0 0110 1111 |
5 / 2 |
2 |
1 |
10 0110 1111 |
2 / 2 |
1 |
0 |
010 0110 1111 |
1 / 2 |
0 |
1 |
1010 0110 1111 |
이 표는 변환의 모든 단계를 명확하게 하기 위한 것이지만 실제로는 변환의 용이성과 속도를 얻기 위해 다음 방법에 따라 결과를 얻을 수 있습니다.
1980을 이진수로 변환할 10진수로 지정합니다. 표에 제공된 방법을 따르는 것보다 다음과 같은 방식으로 이 문제를 해결할 것입니다.
화살표 방향에 따라 나머지를 정렬하면 십진수에 해당하는 이진수 1980 = 0111 1011 1100을 얻습니다.
이진수 형식
일반적으로 이진수를 비트 시퀀스로 씁니다. "비트"는 기계의 "이진 숫자"의 약자입니다. 이러한 비트에 대해 정의된 형식 경계가 있습니다. 이러한 형식 경계는 다음 표에 나와 있습니다.
Name |
Size in bits |
Example |
Bit |
1 |
1 |
Nibble |
4 |
0101 |
Byte |
8 |
0000 0101 |
Word |
16 |
0000 0000 0000 0101 |
Double Word |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
숫자 기반에서 값을 변경하지 않고 원하는 만큼 선행 0을 추가할 수 있지만 일반적으로 이진수를 원하는 크기 경계로 조정하기 위해 선행 0을 추가합니다.
예를 들어, 표와 같이 숫자 7을 다른 경우와 같이 나타낼 수 있습니다.
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
Nibble |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
Byte |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Word |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
여기서 이진수의 가장 오른쪽 비트는 비트 위치 0이고 왼쪽의 각 비트에는 위의 표와 같이 다음 연속 비트 번호가 지정됩니다.
비트 0은 일반적으로 최하위 비트 또는 LSB라고 하고 맨 왼쪽 비트는 일반적으로 최상위 비트 또는 MSB라고 합니다. 이러한 표현 형식에 대해 알려주십시오.
비트
비트는 바이너리 컴퓨터에서 데이터의 가장 작은 단위입니다. 단일 비트는 0 또는 1 중 하나의 값만 나타낼 수 있습니다. 비트를 사용하여 부울(True/False) 값을 나타내는 경우 해당 비트는 true 또는 false를 나타냅니다..
니블
Nibble은 숫자 체계, BCD(Binary Coded Decimal) 또는/및 16진수(기수 16) 숫자에 대해 이야기할 때 특히 관심 분야에 나타납니다.
니블은 4비트 경계의 비트 모음입니다. 단일 BCD 또는 16진수를 나타내는 데 4비트가 필요합니다. 니블을 사용하여 최대 16개의 고유한 값을 나타낼 수 있습니다.
16진수의 경우 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 값을 4비트로 표현합니다. BCD는 10개의 다른 숫자(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)를 사용하며 4비트가 필요합니다.
사실, 16개의 고유한 값은 니블(nibble)로 표현할 수 있지만 16진수와 BCD 숫자는 단일 니블로 표현할 수 있는 기본 항목입니다. 니블의 비트 레벨 표현은 다음과 같습니다.
바이트
바이트는 80x86 마이크로프로세서에서 사용하는 가장 중요한 데이터 구조입니다. 바이트는 8비트로 구성되며 마이크로프로세서에서 주소 지정이 가능한 가장 작은 데이터 항목입니다. 컴퓨터의 주 메모리와 I/O 주소는 모두 바이트 주소이므로 80x86 마이크로프로세서 프로그램에서 개별적으로 액세스할 수 있는 가장 작은 항목은 8비트 값입니다.
더 작은 데이터에 액세스하려면 데이터가 포함된 바이트를 읽고 원하지 않는 비트를 마스킹해야 합니다. 우리는 다음 장에서 이것을 하기 위해 프로그래밍을 할 것입니다.
바이트의 가장 중요한 용도는 문자 코드를 보유하는 것입니다. 바이트의 비트는 다음과 같이 비트 0(b0)에서 7(b7)까지 번호가 지정됩니다.
비트 0(b0)은 하위 비트 또는 최하위 비트이고 비트 7(b7)은 바이트의 상위 비트 또는 최상위 비트입니다.
여기서 우리는 비트 b0에서 b3이 낮은 차수 니블을 구성하고 비트 b4에서 b7이 높은 차수 니블을 형성하는 정확히 2개의 니블을 포함하는 바이트를 봅니다.
바이트는 정확히 두 개의 니블을 포함하므로 바이트 값에는 두 개의 16진수가 필요합니다.
기존의 최신 컴퓨터는 바이트 주소 지정이 가능한 시스템이므로 개별 비트 또는 니블보다 전체 바이트를 조작하는 것이 더 효율적입니다.
이것이 대부분의 프로그래머가 256개 이하의 항목이 필요한 데이터 유형을 나타내기 위해 전체 바이트를 사용하는 이유입니다.
바이트는 8비트를 포함하므로 최대 8비트 이진수는 1111 1111로 256(십진수)에 해당하므로 일반적으로 바이트는 다음을 나타내는 데 사용되므로 28 또는 256개의 다른 값을 나타낼 수 있습니다.
- 0에서 255 사이의 부호 없는 숫자 값
- -128에서 +127 사이의 부호 있는 숫자
- ASCII 문자 코드
- 그리고 많은 데이터 유형이 256개 미만의 항목을 가지므로 256개 이하의 다른 값이 필요한 기타 특수 데이터 유형은 일반적으로 8비트면 충분합니다.
말씀
단어는 16비트의 그룹입니다. 그러나 전통적으로 Word의 경계는 16비트 또는 프로세서의 데이터 버스 크기로 정의되며 Double Word는 Two Words입니다. 따라서 Word와 Double Word는 고정된 크기가 아니라 프로세서에 따라 시스템마다 다릅니다. 그러나 개념적 읽기를 위해 단어를 2바이트로 정의합니다.
비트 수준에서 단어가 표시되면 비트 0(b0)에서 시작하여 15(b15)까지 워드의 비트로 번호가 매겨집니다. 비트 레벨 표현은 다음과 같습니다.
여기서 비트 0은 LSB(최하위 비트)이고 비트 15는 MSB(최상위 비트)입니다. 워드의 다른 비트를 참조해야 할 경우 해당 비트 위치 번호를 사용하여 참조합니다.
이러한 방식으로 워드는 비트 b0에서 비트 b7이 하위 바이트를 형성하고 비트 b8에서 b15가 상위 바이트를 형성하도록 정확히 2바이트를 포함합니다. 16비트 단어로 216(65536)개의 다른 값을 나타낼 수 있습니다. 이러한 값은 다음과 같을 수 있습니다.
- 0에서 65,535 사이의 부호 없는 숫자 값입니다.
- -32,768 ~ +32,767 범위의 부호 있는 숫자 값
- 65,536개 이하의 값을 가진 모든 데이터 유형. 이런 식으로 단어는 주로 다음과 같이 사용됩니다.
- 16비트 정수 데이터 값
- 16비트 메모리 주소
- 16비트 이하가 필요한 모든 숫자 시스템
더블 워드
더블 워드는 이름 그대로 두 단어입니다. 따라서 더블 워드 수량은 32비트입니다. 더블 워드는 상위 워드와 하위 워드, 4바이트 또는 8개의 니블 등으로 나눌 수도 있습니다.
이러한 방식으로 Double 단어는 모든 종류의 다른 데이터를 나타낼 수 있습니다. 다음 중 하나일 수 있습니다.
- 0에서 4,294,967,295 범위의 부호 없는 이중 단어,
- -2,147,483,648 ~ 2,147,483,647 범위의 부호 있는 더블 워드
- 32비트 부동 소수점 값
- 또는 32비트 이하가 필요한 기타 데이터.
8진수 시스템
8진수 시스템은 오래된 컴퓨터 시스템에서 널리 사용되었지만 오늘날에는 거의 사용되지 않습니다. 그러나 우리는 지식을 위한 8진법 이상을 취할 것입니다.
8진수 시스템은 3비트 경계가 있는 이진 시스템을 기반으로 합니다. 8진수 시스템은 8진수를 사용하며 0에서 7까지의 숫자만 포함합니다. 이러한 방식으로 다른 숫자는 숫자를 잘못된 8진수로 만듭니다.
각 위치에 대한 가중치는 다음 표와 같습니다.
(base)power |
85 |
84 |
83 |
82 |
81 |
80 |
Value |
32768 |
4096 |
512 |
64 |
8 |
1 |
2진에서 8진으로의 변환
정수 이진수에서 8진수로 변환하려면 다음 두 단계를 따릅니다.
먼저 이진수를 LSB에서 MSB로 3비트 섹션으로 나눕니다. 그런 다음 3비트 이진수를 해당하는 8진수로 변환합니다. 더 잘 이해하기 위해 예를 들어 보겠습니다. 8진수 시스템으로 변환하기 위해 11001011010001이라는 이진수를 지정한 경우 다음과 같이 이 숫자에 위의 두 단계를 적용합니다.
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Equivalent number |
3 |
1 |
3 |
2 |
1 |
따라서 이진수 11001011010001에 해당하는 8진수는 31321입니다.
8진수에서 2진수로 변환
8진수 정수를 해당하는 이진수로 변환하려면 다음 두 단계를 따릅니다.
먼저 10진수를 3비트 이진수로 변환합니다. 그런 다음 공백을 제거하여 3비트 섹션을 결합합니다. 예를 들어 보겠습니다. 해당하는 이진수로 변환할 8진수 정수 31321(Q)이 있는 경우 위의 두 단계를 다음과 같이 적용합니다.
Equivalent number |
3 |
1 |
3 |
2 |
1 |
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
따라서 8진수 31321(Q)에 해당하는 이진법은 011 0010 1101 0001입니다.
8진수에서 10진수로 변환
8진수를 10진수로 변환하려면 각 위치의 값에 8진수 가중치를 곱하고 각 값을 더합니다.
이를 더 잘 이해하기 위해 예를 들어 보겠습니다. 8진수 31321Q가 해당 10진수로 변환되도록 합시다. 그런 다음 다음 단계를 따릅니다.
3*84 + 1*83 + 3*82 + 2*81 + 1*80
= 3*4096 + 1*512 + 3*64 + 2*8 + 1*1
= 12288 + 512 + 192 + 16 + 1
= 13009
10진수에서 8진수로 변환
10진수를 8진수로 변환하는 것은 약간 더 어렵습니다. 10진수에서 8진수로 변환하는 일반적인 방법은 8로 반복되는 나눗셈입니다. 이 방법을 위해 10진수를 8로 나누고 나머지를 측면에 최하위 숫자로 씁니다. 이 과정은 몫을 8로 나누고 몫이 0이 될 때까지 나머지를 쓰는 방식으로 계속됩니다.
나누기를 수행할 때 10진수에 해당하는 8진수를 나타내는 나머지는 최하위 자릿수(오른쪽)에서 시작하여 기록되고 각각의 새 자릿수는 이전 숫자의 다음 유효 자릿수(왼쪽)에 기록됩니다. 숫자.
예를 들어 더 잘 이해합시다. 13009라는 십진수가 있는 경우(위의 예에서 이 십진수를 찾았고 이를 다시 8진수로 변환하여 이전 예도 확인할 수 있습니다.) 이 방법은 다음 표에 설명되어 있습니다.
Division |
Quotient |
Remainder |
Octal Number |
13009 / 8 |
1626 |
1 |
1 |
1626 / 8 |
203 |
2 |
21 |
203 / 8 |
25 |
3 |
321 |
25 / 8 |
3 |
1 |
1321 |
3 / 8 |
0 |
3 |
31321 |
보시다시피 원래 번호로 돌아 왔습니다. 그것이 우리가 기대해야 하는 것입니다. 이 표는 절차를 이해하기 위한 것이었습니다. 이제 작업의 편의성과 시간 절약을 위해 실제로 따라야 하는 방법을 이해하기 위해 동일한 변환을 반복해 보겠습니다. 둘 다 사실 같은 것입니다.
나머지를 화살표 방향으로 정렬하면 예상했던 8진수 31321이 나옵니다.
16진수 시스템
16진수는 다음과 같은 두 가지 기능을 제공하기 때문에 16진수는 데이터 복구나 다른 유형의 디스크 문제 해결 또는 디스크 분석 프로그래밍에 가장 일반적으로 사용됩니다.
16진수는 매우 간결합니다. 그리고 16진수에서 2진수로, 2진수에서 16진수로 변환하기 쉽습니다. 하드 디스크의 실린더 수, 헤드 및 섹터 수와 같은 많은 중요한 것을 계산하거나 하드 디스크 편집기 프로그램을 사용하여 다양한 특성과 문제를 분석할 때 16진수 시스템에 대한 충분한 지식이 필요합니다. 16진수 시스템은 니블 또는 4비트 경계를 사용하는 이진 시스템을 기반으로 합니다.
16진수 시스템은 16진수를 사용하며 숫자 0에서 9와 문자 A, B, C, D, E, F만 포함합니다. H를 숫자와 함께 사용하여 16진수. 다음 표는 서로 구별되는 다양한 숫자 체계의 표현을 보여줍니다.
Binary |
Octal |
Decimal |
Hex |
0000B |
00Q |
00 |
00H |
0001B |
01Q |
01 |
01H |
0010B |
02Q |
02 |
02H |
0011B |
03Q |
03 |
03H |
0100B |
04Q |
04 |
04H |
0101B |
05Q |
05 |
05H |
0110B |
06Q |
06 |
06H |
0111B |
07Q |
07 |
07H |
1000B |
10Q |
08 |
08H |
1001B |
11Q |
09 |
09H |
1010B |
12Q |
10 |
0AH |
1011B |
13Q |
11 |
0BH |
1100B |
14Q |
12 |
0CH |
1101B |
15Q |
13 |
0DH |
1110B |
16Q |
14 |
0EH |
1111B |
17Q |
15 |
0FH |
1 0000B |
20Q |
16 |
10H |
이 표는 0에서 16까지의 10진수 값에 대해 한 숫자 기반에서 다른 숫자 기반으로 변환하는 데 필요할 수 있는 모든 정보를 제공합니다.
16진수의 각 위치에 대한 가중치는 다음 표에 나와 있습니다.
(Base)power |
163 |
162 |
161 |
160 |
Value |
4096 |
256 |
16 |
1 |
2진수에서 16진수로의 변환
2진수를 16진수 형식으로 변환하려면 먼저 이진수에 4비트의 배수가 포함되도록 맨 왼쪽에 선행 0으로 이진수를 채우십시오. 그런 다음 다음 두 단계를 따르세요.
먼저 이진수를 LSB에서 MSB로 4비트 섹션으로 나눕니다. 그런 다음 4비트 이진수를 해당하는 16진수로 변환합니다. 방법을 더 잘 이해하기 위해 예를 들어 보겠습니다. 임의의 이진수 100 1110 1101 0011을 해당하는 16진수로 변환하도록 합시다. 그런 다음 아래와 같이 위의 두 단계를 적용합니다.
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Hexadecimal value |
4 |
E |
D |
3 |
따라서 2진수 100 1110 1101 0011에 해당하는 16진수 값은 4ED3입니다.
16진수에서 2진수로 변환
16진수를 2진수로 변환하려면 다음 두 단계를 따릅니다.
먼저, 16진수를 4비트 바이너리로 변환합니다. 그런 다음 공백을 제거하여 4비트 섹션을 결합합니다. 절차를 더 잘 이해하기 위해 위의 16진수, 즉 4ED3의 예를 들어 다음과 같이 이 두 단계를 적용합니다.
Hexadecimal value |
4 |
E |
D |
3 |
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
따라서 16진수 4ED3의 경우 해당 2진수 = 0100 1110 1101 0011
예상된 답변입니다.
16진수에서 10진수로 변환 16진수에서 10진수로 변환하려면 각 위치의 값에 16진수 가중치를 곱하고 각 값을 더합니다. 절차를 더 잘 이해하기 위해 예를 들어 보겠습니다. 상응하는 10진수로 변환할 16진수 3ABE가 있다고 가정합니다. 그러면 절차는 다음과 같을 것입니다.
3*163 + A*162 + B*161 + E*160
= 3* 4096 + 10* 256 + 11*16 + 14
= 12288 + 2560 + 176 + 14
= 15038
따라서 16진수 3ABE에 해당하는 10진수는 15038입니다.
10진수에서 16진수로 변환
10진수를 16진수로 변환하는 일반적인 방법은 16으로 반복 나누기입니다. 이 방법에서는 십진수를 16으로 나누고 나머지를 측면에 최하위 자릿수로 씁니다.
이 과정은 몫을 16으로 나누고 몫이 0이 될 때까지 나머지를 쓰는 방식으로 계속됩니다. 나눗셈을 수행할 때 십진수에 해당하는 16진수를 나타내는 나머지는 최하위 자릿수(오른쪽 ) 각 새 숫자는 이전 숫자의 다음으로 중요한 숫자(왼쪽)에 기록됩니다.
예를 들어 배워봅시다. 위의 변환 후 얻은 십진수 15038을 사용합니다. 이를 통해 위의 변환을 확인할 수 있으며 그 반대의 경우도 마찬가지입니다.
Division |
Quotient |
Remainder |
Hex Number |
15038 / 16 |
939 |
14 (E H) |
E |
939 / 16 |
58 |
11 (B H) |
BE |
58 / 16 |
3 |
10 (A H) |
ABE |
3 / 16 |
0 |
3 (3 H) |
03ABE |
따라서 우리는 10진수 15038에 해당하는 16진수 03ABE H를 얻고 이러한 방식으로 원래 숫자로 돌아갑니다. 그것이 우리가 기대해야 하는 것입니다.
다음 표는 0에서 255까지의 10진수 범위에서 16진수를 10진수로 또는 그 반대로 빠르게 검색하는 데 도움이 될 수 있습니다.
이 정사각형 테이블에는 0부터 A까지 16개의 행이 있으며 0에서 A까지 시작하는 16개의 열도 있습니다. 이 테이블에서 0H에서 FFH 사이에 있는 모든 16진수의 10진수 값을 찾을 수 있습니다. 이는 숫자의 10진수 값이 0에서 255 사이의 10진수 범위에 있어야 함을 의미합니다.
- 위 표에서 16진수 값 구하기: 위 표에서 행의 개수는 16진수의 첫 번째 16진수(왼쪽 16진수)를, 열의 개수는 16진수의 두 번째 16진수(오른쪽 16진수)를 나타냅니다.
ACH라고 하는 16진수를 동등한 10진수로 변환하도록 합시다. 그런 다음 테이블에서 Ath 행의 C 번째 열에 있는 10진수 값을 보고 16진수 ACH에 해당하는 10진수 값인 172를 얻습니다.
- 위 표에서 10진수의 16진수 값 찾기: 위의 표에서 행의 수는 16진수의 첫 번째 16진수(왼쪽 16진수)를 나타내고 열의 수는 16진수의 두 번째 16진수(오른쪽 16진수)를 나타냅니다. 따라서 동등한 16진수로 변환할 10진수가 있는 경우 테이블에서 숫자를 검색하고 다음과 같이 해당하는 16진수 값을 찾으십시오.
10진수의 16진수 값 = (행 번호)(열 번호)
예를 들어 10진수 154에 해당하는 16진수 값을 찾으려면 표에서 해당 숫자의 위치를 참조하십시오. 숫자 154는 테이블의 9번째 행과 Ath 열에 있습니다. 따라서 10진수 154에 해당하는 16진수 값은 9AH입니다.
ASCII 코드
ASCII는 American Standard Code for Information Interchange의 약자입니다. ASCII 문자 집합의 처음 128개 문자와 동일하지만 나머지 문자와 다른 문자, 숫자 및 기호에 대한 코딩 표준입니다. 이러한 다른 문자는 일반적으로 IBM에서 정의한 확장 문자의 특수 ASCII 문자라고 합니다.
ASCII 코드 0~1FH인 처음 32자는 인쇄되지 않는 특수 문자 집합을 형성합니다. 이러한 문자는 기호를 표시하는 것이 아니라 다양한 프린터 및 디스플레이 제어 작업을 수행하기 때문에 제어 문자라고 합니다. 이러한 문자는 이 장에 제공된 ASCII 문자 테이블에 나열되어 있습니다. 이러한 제어 문자의 의미는 다음과 같습니다.
NUL(Null):
문자가 없습니다. 데이터가 없는 저장 장치의 표면(플래터 표면 등)에 시간을 채우거나 공간을 채우는 데 사용됩니다. 데이터 와이퍼(파괴 및 비파괴 모두)에 대한 프로그래밍을 수행하여 할당되지 않은 공간을 지워 삭제된 데이터가 어느 프로그램이나 프로그램에 의해 복구되지 않도록 할 때 이 문자를 사용합니다.
SOH(제목 시작):
이 문자는 주소 또는 경로 정보를 포함할 수 있는 제목의 시작을 나타내는 데 사용됩니다.
TX(텍스트 시작):
이 문자는 텍스트의 시작을 나타내는 데 사용되며 이러한 방식으로 제목의 끝을 나타내는 데도 사용됩니다.
ETX(텍스트 끝):
이 문자는 STX로 시작된 텍스트를 종료하는 데 사용됩니다.
EOT(전송 종료):
이 문자는 제목과 함께 하나 이상의 "테스트"가 포함되었을 수 있는 전송의 끝을 나타냅니다.
ENQ(문의):
원격 스테이션의 응답 요청입니다. 스테이션이 자신을 식별하도록 요청하는 것입니다.
ACK(확인):
샌더에 대한 긍정 응답으로 수신 장치에서 전송되는 문자입니다. 폴링 메시지에 대한 긍정적인 응답으로 사용됩니다.
벨(벨):
사람의 주의를 환기시킬 필요가 있을 때 사용합니다. 경보 또는 주의 장치를 제어할 수 있습니다. 아래와 같이 명령 프롬프트에 이 문자를 입력하면 컴퓨터에 연결된 스피커에서 벨 톤을 들을 수 있습니다.
C:\> 에코 ^G
여기서 ^G는 Ctrl + G 키 조합으로 인쇄됩니다.
BS(백스페이스):
이 문자는 인쇄 메커니즘의 이동을 나타내거나 커서를 한 위치에서 뒤로 표시합니다.
HT(가로 탭):
인쇄 메커니즘 또는 디스플레이 커서가 미리 할당된 다음 "탭" 또는 정지 위치로 앞으로 이동하는 것을 나타냅니다.
LF(줄바꿈):
인쇄 메커니즘의 이동 또는 다음 줄의 시작 부분으로 커서를 표시함을 나타냅니다.
VT(세로 탭):
인쇄 메커니즘 또는 디스플레이 커서가 미리 할당된 일련의 인쇄 라인 중 다음으로 이동하는 것을 나타냅니다.
FF(양식 피드):
다음 페이지, 시작 또는 화면의 시작 위치로 인쇄 메커니즘 또는 표시 커서의 이동을 나타냅니다.
CR(캐리지 리턴):
동일한 줄의 시작 위치로 인쇄 메커니즘 또는 표시 커서의 이동을 나타냅니다.
SO(교대):
이는 뒤에 오는 코드 조합이 Shift In 문자에 도달할 때까지 표준 문자 집합 외부로 해석되어야 함을 나타냅니다.
나(시프트 인):
다음 코드 조합이 표준 문자 집합에 따라 해석되어야 함을 나타냅니다.
DLE(데이터 링크 이스케이프):
연속적으로 이어지는 하나 이상의 문자의 의미를 변경하는 문자입니다. 추가 제어를 제공하거나 임의의 비트 조합을 갖는 데이터 문자의 전송을 허용할 수 있습니다.
DC1, DC2, DC3 및 DC4(기기 제어):
보조 장치 또는 특수 터미널 기능을 제어하기 위한 문자입니다.
NAK(부정적 승인):
수신 장치가 보낸 사람에 대한 부정적인 응답으로 전송하는 문자입니다. 폴링 메시지에 대한 부정적인 응답으로 사용됩니다.
SYN(동기/유휴):
동기 전송 시스템에서 데이터가 전송되지 않을 때 동기화를 달성하는 데 사용됩니다. 동기 전송 시스템은 SYN 문자를 계속 전송할 수 있습니다.
ETB(전송 차단 종료):
이 문자는 통신을 위한 데이터 블록의 끝을 나타냅니다. 블록 구조가 처리 형식과 반드시 관련이 있는 것은 아닌 경우 데이터를 차단하는 데 사용됩니다.
CAN(취소): 일반적으로 오류가 감지되었기 때문에 메시지 또는 블록에서 앞에 오는 데이터를 무시해야 함을 나타냅니다.
EM(매체 끝): 테이프, 표면(일반적으로 디스크 플래터) 또는 기타 매체의 물리적 끝 또는 매체의 사용된 부분에 필요한 끝을 나타냅니다.
SUB(대체): 잘못되었거나 유효하지 않은 것으로 밝혀진 문자를 대체합니다.
ESC(Escape): 연속적으로 이어지는 지정된 수의 문자에 대체 의미를 부여한다는 점에서 코드 확장을 제공하기 위한 문자입니다.
FS(파일 구분 기호): 이 문자는 파일 구분 문자로 사용됩니다.
GS(그룹 구분 기호): 그룹 구분 문자로 사용됩니다.
RS(레코드 구분 기호): 레코드 구분 문자로 사용됩니다.
미국(미국 구분 기호):
통합 구분 기호입니다.
32개의 ASCII 문자 코드의 두 번째 그룹에는 다양한 구두점 기호, 특수 문자 및 숫자가 있습니다. 이 그룹에서 가장 주목할만한 캐릭터는 다음과 같습니다.
공백 문자(ASCII 코드 20H)
숫자 0~9(ASCII 코드 30h~39h)
수학 및 논리 기호
SP(공백):
단어를 분리하거나 인쇄 메커니즘을 이동하거나 커서를 한 위치 앞으로 표시하는 데 사용되는 인쇄되지 않는 문자입니다.
32 ASCII 문자의 세 번째 그룹은 대문자 알파벳 문자 그룹입니다. A에서 Z까지의 문자에 대한 ASCII 코드는 41H에서 5AH까지의 범위에 있습니다. 26개의 다른 알파벳 문자만 있기 때문에 나머지 6개의 코드에는 다양한 특수 기호가 있습니다.
32개의 ASCII 문자 코드의 네 번째 그룹은 소문자 알파벳 기호, 5개의 추가 특수 기호 및 또 다른 제어 문자 삭제의 그룹입니다.
DEL(삭제):
원하지 않는 문자를 삭제하는 대신 원하지 않는 문자를 삭제하는 데 사용됩니다.
다음에는 ASCII 코드와 확장 문자를 나타내는 두 개의 표가 있습니다. 첫 번째 표는 설명된 서로 다른 유형의 4가지 문자 그룹을 모두 나타냅니다. 이 테이블은 다음과 같이 데이터 표현 및 ASCII 테이블입니다.
데이터 표현 및 ASCII 코드 테이블:
HEX |
DEC |
CHR |
CTRL |
00 |
0 |
NUL |
^@ |
01 |
1 |
SOH |
^A |
02 |
2 |
STX |
^B |
03 |
3 |
ETX |
^C |
04 |
4 |
EOT |
^D |
05 |
5 |
ENQ |
^E |
06 |
6 |
ACK |
^F |
07 |
7 |
BEL |
^G |
08 |
8 |
BS |
^H |
09 |
9 |
HT |
^I |
0A |
10 |
LF |
^J |
0B |
11 |
VT |
^K |
0C |
12 |
FF |
^L |
0D |
13 |
CR |
^M |
0E |
14 |
SO |
^N |
0F |
15 |
SI |
^O |
10 |
16 |
DLE |
^P |
11 |
17 |
DC1 |
^Q |
12 |
18 |
DC2 |
^R |
13 |
19 |
DC3 |
^S |
14 |
20 |
DC4 |
^T |
15 |
21 |
NAK |
^U |
16 |
22 |
SYN |
^V |
17 |
23 |
ETB |
^W |
18 |
24 |
CAN |
^X |
19 |
25 |
EM |
^Y |
1A |
26 |
SUB |
^Z |
1B |
27 |
ESC |
1C |
28 |
FS |
1D |
29 |
GS |
1E |
30 |
RS |
1F |
31 |
US |
HEX |
DEC |
CHR |
20 |
32 |
SP |
21 |
33 |
! |
22 |
34 |
" |
23 |
35 |
# |
24 |
36 |
$ |
25 |
37 |
% |
26 |
38 |
& |
27 |
39 |
' |
28 |
40 |
( |
29 |
41 |
) |
2A |
42 |
* |
2B |
43 |
+ |
2C |
44 |
, |
2D |
45 |
- |
2E |
46 |
. |
2F |
47 |
/ |
30 |
48 |
0 |
31 |
49 |
1 |
32 |
50 |
2 |
33 |
51 |
3 |
34 |
52 |
4 |
35 |
53 |
5 |
36 |
54 |
6 |
37 |
55 |
7 |
38 |
56 |
8 |
39 |
57 |
9 |
3A |
58 |
: |
3B |
59 |
; |
3C |
60 |
< |
3D |
61 |
= |
3E |
62 |
> |
3F |
63 |
? |
HEX |
DEC |
CHR |
40 |
64 |
@ |
41 |
65 |
A |
42 |
66 |
B |
43 |
67 |
C |
44 |
68 |
D |
45 |
69 |
E |
46 |
70 |
F |
47 |
71 |
G |
48 |
72 |
H |
49 |
73 |
I |
4A |
74 |
J |
4B |
75 |
K |
4C |
76 |
L |
4D |
77 |
M |
4E |
78 |
N |
4F |
79 |
O |
50 |
80 |
P |
51 |
81 |
Q |
52 |
82 |
R |
53 |
83 |
S |
54 |
84 |
T |
55 |
85 |
U |
56 |
86 |
V |
57 |
87 |
W |
58 |
88 |
X |
59 |
89 |
Y |
5A |
90 |
Z |
5B |
91 |
[ |
5C |
92 |
\ |
5D |
93 |
] |
5E |
94 |
^ |
5F |
95 |
_ |
HEX |
DEC |
CHR |
60 |
96 |
` |
61 |
97 |
a |
62 |
98 |
b |
63 |
99 |
c |
64 |
100 |
d |
65 |
101 |
e |
66 |
102 |
f |
67 |
103 |
g |
68 |
104 |
h |
69 |
105 |
i |
6A |
106 |
j |
6B |
107 |
k |
6C |
108 |
l |
6D |
109 |
m |
6E |
110 |
n |
6F |
111 |
o |
70 |
112 |
p |
71 |
113 |
q |
72 |
114 |
r |
73 |
115 |
s |
74 |
116 |
t |
75 |
117 |
u |
76 |
118 |
v |
77 |
119 |
w |
78 |
120 |
x |
79 |
121 |
y |
7A |
122 |
z |
7B |
123 |
{[} |
7C |
124 |
| |
7D |
125 |
} |
7E |
126 |
~ |
7F |
127 |
DEL |
다음 표는 확장 ASCII 문자라고도 하는 128개의 특수 ASCII 문자 집합을 보여줍니다.
HEX |
DEC |
CHR |
80 |
128 |
Ç |
81 |
129 |
ü |
82 |
130 |
é |
83 |
131 |
â |
84 |
132 |
ä |
85 |
133 |
à |
86 |
134 |
å |
87 |
135 |
ç |
88 |
136 |
ê |
89 |
137 |
ë |
8A |
138 |
è |
8B |
139 |
ï |
8C |
140 |
î |
8D |
141 |
ì |
8E |
142 |
Ä |
8F |
143 |
Å |
90 |
144 |
É |
91 |
145 |
æ |
92 |
146 |
Æ |
93 |
147 |
ô |
94 |
148 |
ö |
95 |
149 |
ò |
96 |
150 |
û |
97 |
151 |
ù |
98 |
152 |
ÿ |
99 |
153 |
Ö |
9A |
154 |
Ü |
9B |
155 |
¢ |
9C |
156 |
£ |
9D |
157 |
¥ |
9E |
158 |
₧ |
9F |
159 |
ƒ |
A0 |
160 |
á |
A1 |
161 |
í |
A2 |
162 |
ó |
A3 |
163 |
ú |
A4 |
164 |
ñ |
HEX |
DEC |
CHR |
A5 |
165 |
Ñ |
A6 |
166 |
ª |
A7 |
167 |
º |
A8 |
168 |
¿ |
A9 |
169 |
⌐ |
AA |
170 |
¬ |
AB |
171 |
½ |
AC |
172 |
¼ |
AD |
173 |
¡ |
AE |
174 |
« |
AF |
175 |
» |
B0 |
176 |
░ |
B1 |
177 |
▒ |
B2 |
178 |
▓ |
B3 |
179 |
│ |
B4 |
180 |
┤ |
B5 |
181 |
╡ |
B6 |
182 |
╢ |
B7 |
183 |
╖ |
B8 |
184 |
╕ |
B9 |
185 |
╣ |
BA |
186 |
║ |
BB |
187 |
╗ |
BC |
188 |
╝ |
BD |
189 |
╜ |
BE |
190 |
╛ |
BF |
191 |
┐ |
C0 |
192 |
└ |
C1 |
193 |
┴ |
C2 |
194 |
┬ |
C3 |
195 |
├ |
C4 |
196 |
─ |
C5 |
197 |
┼ |
C6 |
198 |
╞ |
C7 |
199 |
╟ |
C8 |
200 |
╚ |
C9 |
201 |
╔ |
HEX |
DEC |
CHR |
CA |
202 |
╩ |
CB |
203 |
╦ |
CC |
204 |
╠ |
CD |
205 |
═ |
CE |
206 |
╬ |
CF |
207 |
╧ |
D0 |
208 |
╨ |
D1 |
209 |
╤ |
D2 |
210 |
╥ |
D3 |
211 |
╙ |
D4 |
212 |
╘ |
D5 |
213 |
╒ |
D6 |
214 |
╓ |
D7 |
215 |
╫ |
D8 |
216 |
╪ |
D9 |
217 |
┘ |
DA |
218 |
┌ |
DB |
219 |
█ |
DC |
220 |
▄ |
DD |
221 |
▌ |
DE |
222 |
▐ |
DF |
223 |
▀ |
E0 |
224 |
α |
E1 |
225 |
ß |
E2 |
226 |
Γ |
E3 |
227 |
π |
E4 |
228 |
Σ |
E5 |
229 |
σ |
E6 |
230 |
µ |
E7 |
231 |
τ |
E8 |
232 |
Φ |
E9 |
233 |
Θ |
EA |
234 |
Ω |
EB |
235 |
δ |
EC |
236 |
∞ |
ED |
237 |
φ |
EE |
238 |
Ε |
HEX |
DEC |
CHR |
EF |
239 |
∩ |
F0 |
240 |
≡ |
F1 |
241 |
± |
F2 |
242 |
≥ |
F3 |
243 |
≤ |
F4 |
244 |
⌠ |
F5 |
245 |
⌡ |
F6 |
246 |
÷ |
F7 |
247 |
≈ |
F8 |
248 |
° |
F9 |
249 |
∙ |
FA |
250 |
· |
FB |
251 |
√ |
FC |
252 |
ⁿ |
FD |
253 |
² |
FE |
254 |
■ |
FF |
255 |
|
데이터 및 데이터 저장소 표현에 자주 사용되는 몇 가지 중요한 숫자 체계 용어
아래 표는 분수 접두사 및 확대 접두사로 사용되는 다양한 접두사를 나타냅니다.
바이트:
바이트의 가장 중요한 용도는 문자 코드를 보유하는 것입니다. 우리는 이전에 그것을 논의했습니다.
킬로바이트
기술적으로 킬로바이트는 1024바이트이지만 종종 1000바이트의 동의어로 느슨하게 사용됩니다. 십진법에서 킬로는 1000을 나타내지만 이진법에서 킬로는 1024(210)입니다.
킬로바이트는 일반적으로 K 또는 Kb로 표시됩니다. 십진수 K(1000)와 이진수 K(1024)를 구별하기 위해 IEEE(Institute of Electrical and Electronics Engineers) 표준은 십진수 킬로에 작은 k를 사용하고 이진수 킬로에 대문자 K를 사용하는 규칙에 따라 제안했습니다. 그러나 이 협약은 결코 엄격하게 준수되지 않습니다.
메가바이트
메가바이트는 1048576(220)바이트의 데이터 저장을 설명하는 데 사용되지만 데이터 전송 속도를 MBps로 설명하는 데 사용되는 경우 백만 바이트를 나타냅니다. 메가바이트는 일반적으로 M 또는 MB로 축약됩니다.
기가바이트
기가바이트는 1,073,741,824(230)바이트의 스토리지를 설명하는 데 사용되며 1기가바이트는 1,024MB와 같습니다. 기가바이트는 일반적으로 G 또는 GB로 약칭됩니다.
테라바이트
테라바이트는 1,099,511,627,776(240)바이트로 약 1조 바이트입니다. 테라바이트는 때때로 정확히 1조인 1012(1,000,000,000,000) 바이트로 설명됩니다.
페타바이트
페타바이트는 1,125,899,906,842,624(250)바이트로 설명됩니다. 1페타바이트는 1,024테라바이트와 같습니다.
엑사바이트
엑사바이트는 1,152,921,504,606,846,976(260)바이트로 설명됩니다. 1엑사바이트는 1,024페타바이트와 같습니다.
제타바이트
제타바이트는 약 1021(1,000,000,000,000,000,000,000)바이트인 1,180,591,620,717,411,303,424(270) 바이트로 설명됩니다. 제타바이트는 1,024엑사바이트와 같습니다.
요타바이트
Yottabyte는 약 1024(1,000,000,000,000,000,000,000,000) 바이트인 1,208,925,819,614,629,174,706,176(280) 바이트로 설명됩니다. 요타바이트는 1,024제타바이트와 같습니다.
공통 데이터 저장 조건
데이터 비트의 다양한 그룹화에 대해 이전에 제공된 용어를 참조하는 데 사용되는 다양한 이름이 있습니다. 가장 일반적으로 사용되는 몇 가지가 다음 표에 나열되어 있습니다.
Term |
Number of Bits |
Bit / Digit / Flag |
1 |
Nibble / Nybble |
4 |
Byte / Character |
8 |
Word |
16 |
Double Word / Long Word |
32 |
Very Long Word |
64 |