bin_dec_hex - 2진수, 10진수, 16진수 표기법을 사용하는 방법.
대부분의 사람들은 십진법을 사용합니다. 이 시스템은 10개의 기호를 사용하여 숫자를 나타냅니다. 이 10개의 기호를 모두 사용하면 처음부터 다시 시작하여 위치를 왼쪽으로 늘립니다. 숫자 0은 시퀀스의 유일한 기호이거나 첫 번째 기호가 아닌 경우에만 표시됩니다.
이것이 당신에게 비밀스럽게 들린다면, 이것은 제가 방금 숫자로 말한 것입니다:
0
1
2
3
4
5
6
7
8
9
10
11
12
13등등.
숫자 9가 증가할 때마다 0으로 재설정되고 이전 위치(왼쪽)가 증가합니다(0에서 1로). 그런 다음 숫자 9는 00009로 볼 수 있으며 9를 증가시켜야 할 때 0으로 재설정하고 9 바로 앞의 숫자를 증가시켜 숫자가 00010이 되도록 합니다. 0). 물론 숫자의 내부나 끝에서 발생하는 경우 0을 씁니다.
"00010" -> " 0010" -> " 010" -> " 10"
하지만
" 1 ".
이것은 매우 기본적이었습니다. 이미 알고 계셨을 것입니다. 내가 왜 말했지? 음, 컴퓨터는 일반적으로 10개의 서로 다른 숫자로 숫자를 나타내지 않습니다. 그들은 두 개의 다른 기호, 즉 0과 1만 사용합니다. 이 숫자 집합에 동일한 규칙을 적용하면 이진 번호 체계를 얻게 됩니다.
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101등등.
행 수를 세면 다시 14개의 다른 숫자임을 알 수 있습니다. 숫자는 첫 번째 목록과 동일하고 의미가 동일하며 다른 표현을 사용했습니다. 즉, 사용된 표현을 알아야 하거나 번호 매기기 시스템 또는 기준이라고 합니다. 일반적으로 사용되는 번호 체계를 명시적으로 지정하지 않으면 암묵적으로 십진법을 사용합니다. 다른 번호 매기기 시스템을 사용하려면 이를 명확히 해야 합니다. 이를 위해 널리 채택된 몇 가지 방법이 있습니다. 일반적인 형식 중 하나는 1010(2)을 작성하는 것입니다. 이는 이진 표현으로 숫자를 기록했음을 의미합니다. 숫자 10입니다. 밑수를 지정하지 않고 1010을 쓰면 숫자는 10진수를 사용하여 천십으로 해석됩니다.
책에서는 다른 형태가 일반적입니다. 아래 첨자(두 행 사이에 있는 작은 문자)를 사용합니다. 이 경우 괄호를 생략하고 일반 문자로 숫자를 적고 바로 뒤에 작은 2를 쓸 수 있습니다.
사용되는 번호 매기기 체계를 밑수라고도 부르기 때문에 숫자 1100은 2를 기본으로 하고 숫자 12는 10을 기본으로 합니다.
이진 시스템 내에서 선행 0을 쓰는 것이 일반적입니다. 숫자는 문맥에 따라 4, 8 또는 16의 연속으로 기록됩니다.
우리는 컴퓨터와 대화할 때 이진 형식을 사용할 수 있지만(...프로그래밍...) 숫자는 크게 표현됩니다. 숫자 65'535(종종 십진법에서 a '는 가독성을 위해 세 자리 블록을 구분하는 데 사용됨)는 숫자 1의 16배인 1111111111111111(2)로 기록됩니다. 이것은 어렵고 오류가 발생하기 쉽습니다. 따라서 일반적으로 16진수라고 하는 다른 기수를 사용합니다. 16개의 다른 기호를 사용합니다. 먼저 십진법의 기호를 사용한 다음 알파벳 문자를 계속 사용합니다. 우리는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F를 얻습니다. 쉽게 (그리고 뒤로).
8진수 시스템이라고 하는 또 다른 시스템이 사용되고 있습니다. 이것은 예전에는 더 일반적이었지만 더 이상 자주 사용되지는 않습니다. 때때로 사용 중일 수 있으므로 익숙해져야 하며 아래에서 보여드리겠습니다. 다른 표현과 같은 이야기이지만 8개의 다른 기호가 있습니다.
Binary (2)
Octal (8)
Decimal (10)
Hexadecimal (16)
(2) (8) (10) (16)
00000 0 0 0
00001 1 1 1
00010 2 2 2
00011 3 3 3
00100 4 4 4
00101 5 5 5
00110 6 6 6
00111 7 7 7
01000 10 8 8
01001 11 9 9
01010 12 10 A
01011 13 11 B
01100 14 12 C
01101 15 13 D
01110 16 14 E
01111 17 15 F
10000 20 16 10
10001 21 17 11
10010 22 18 12
10011 23 19 13
10100 24 20 14
10101 25 21 15오늘날 사용되는 대부분의 컴퓨터는 8비트 바이트를 사용합니다. 이는 한 번에 8비트를 저장한다는 의미입니다. 8진수 시스템이 가장 실용적이지 않은 이유를 알 수 있습니다. 8비트를 나타내려면 3자리 숫자가 필요하며 이는 2비트(2+3+3 =8). 이것은 낭비입니다. 16진수의 경우 완전히 사용되는 두 자리만 필요합니다.
(2) (8) (10) (16)
11111111 377 255 FF2진수와 16진수가 빠르게 변환될 수 있는 이유를 알 수 있습니다. 각 16진수에는 정확히 4개의 2진수가 있습니다. 2진수 가져오기: 오른쪽에서 네 자리를 가져와 16진수로 만듭니다(위 표 참조). 더 이상 숫자가 없을 때까지 이것을 반복하십시오. 그리고 그 반대의 경우: 16진수를 사용합니다. 각 자릿수에 해당하는 이진법을 기록하십시오.
컴퓨터(또는 컴퓨터에서 실행되는 파서)는 1234(16)과 같은 숫자를 변환하는 데 어려움을 겪을 것입니다. 따라서 16진수는 접두사로 지정됩니다. 이 접두사는 작성 중인 언어에 따라 다릅니다. 일부 접두사는 C의 경우 0x, Pascal의 경우 $, HTML의 경우 #입니다. 숫자가 0으로 시작하면 8진수라고 가정하는 것이 일반적입니다. 당신이 그것이 무엇인지 아는 한 그것이 무엇을 사용하는지는 중요하지 않습니다. 16진수에는 0x, 2진수에는 %, 8진수에는 0을 사용하겠습니다. 다음 숫자는 모두 동일하며 표현(기준)만 다릅니다. 021 0x11 17 %00010001
산술 및 변환을 수행하려면 한 가지 더 이해해야 합니다. 이미 알고 있지만 아직 보지 못한 것일 수 있습니다.
1234(접두어가 없으므로 십진법)를 적으면 천이백삼십사라는 숫자를 말하는 것입니다. 수식의 종류:
1 * 1000 = 1000
2 * 100 = 200
3 * 10 = 30
4 * 1 = 4
This can also be written as:
1 * 10^3
2 * 10^2
3 * 10^1
4 * 10^0여기서 ^는 ~의 거듭제곱을 의미합니다.
기본 10과 위치 0,1,2 및 3을 사용하고 있습니다. 맨 오른쪽 위치에 10을 곱하면 안 됩니다. 오른쪽에서 두 번째 위치에 10을 한 번 곱해야 합니다. 오른쪽에서 세 번째 위치에 곱합니다. 10번으로 2번. 이것은 어떤 위치가 사용되든 계속됩니다.
다른 모든 표현에서도 동일합니다.
0x1234는
1 * 16^3
2 * 16^2
3 * 16^1
4 * 16^0
01234 would be
1 * 8^3
2 * 8^2
3 * 8^1
4 * 8^0시스템이 두 개의 기호만 사용하므로 이 예제는 바이너리에 대해 수행할 수 없습니다. 다른 예시:
%1010은
1 * 2^3
0 * 2^2
1 * 2^1
0 * 2^016진수 형식으로 변환하고 %1010을 0xA로 변환하는 것이 더 쉬웠을 것입니다. 조금 지나면 익숙해집니다. 더 이상 계산을 할 필요가 없지만 0xA는 10을 의미한다는 점만 알아두십시오.
10진수를 16진수로 변환하려면 다음 방법을 사용할 수 있습니다. 견적을 작성하는 데 시간이 좀 걸리지만 시스템을 자주 사용하면 더 쉬울 것입니다. 나중에 또 다른 방법을 찾아보도록 하겠습니다.
먼저 다른 시스템에서 얼마나 많은 위치가 사용될 것인지 알아야 합니다. 이렇게 하려면 사용할 최대 숫자를 알아야 합니다. 글쎄요, 보이는 것만큼 어렵지는 않습니다. 10진수에서 두 자리로 구성할 수 있는 최대 수는 99입니다. 세 자리의 최대 수는 999입니다. 다음 숫자에는 추가 위치가 필요합니다. 이 아이디어를 뒤집으면 10^3(10*10*10은 1000) 빼기 1 또는 10^2 빼기 1을 취하여 숫자를 찾을 수 있음을 알 수 있습니다.
이것은 16진수에도 적용할 수 있습니다:
16^4 = 0x10000 = 65536
16^3 = 0x1000 = 4096
16^2 = 0x100 = 256
16^1 = 0x10 = 16숫자가 65'536보다 작으면 네 위치에 맞습니다. 숫자가 4'095보다 크면 위치 4를 사용해야 합니다. 0 아래로 떨어지지 않고 숫자에서 4'096을 몇 번 뺄 수 있는지가 첫 번째 숫자입니다. 이것은 항상 1에서 15(0x1에서 0xF) 사이의 숫자입니다. 다른 위치에 대해서도 동일하게 수행하십시오.
41'029로 시도해 봅시다. 16^4보다 작지만 16^3-1보다 큽니다. 이것은 우리가 네 가지 위치를 사용해야 함을 의미합니다. 0 이하로 떨어지지 않고 41'029에서 16^3을 10번 뺄 수 있습니다. 따라서 가장 왼쪽 숫자는 A이므로 0xA????가 됩니다. 숫자는 41'029 - 10*4'096=41'029-40'960=69로 줄어듭니다. 69는 16^3보다 작지만 16^2-1보다 크지 않습니다. 따라서 두 번째 숫자는 0이고 이제 0xA0??가 있습니다. 69는 16^2보다 작고 16^1-1보다 큽니다. 우리는 16^1(그냥 평범한 16)을 네 번 빼고 4를 적어서 0xA04?를 얻을 수 있습니다. 69에서 64를 빼면(69 - 4*16) 마지막 숫자는 5 --> 0xA045입니다.
다른 방법은 오른쪽부터 숫자를 쌓는 것입니다. 41'029를 다시 시도해 보겠습니다. 16으로 나누고 분수를 사용하지 마십시오(정수만).
41029/16은 2564이고 나머지는 5입니다. 5를 적으세요. 2564/16은 160이고 나머지는 4입니다. 5 앞에 4를 씁니다. 160/16은 나머지가 없는 10입니다. 45 앞에 0을 붙입니다. 10/16은 1보다 작습니다. 여기에서 끝나고 0xA를 앞에 추가합니다. 0xA045로 끝납니다.
사용할 방법은 귀하에게 달려 있습니다. 당신에게 맞는 것을 사용하십시오. 각각의 경우에 어떤 방법을 사용하는지 말할 수 없이 둘 다 사용합니다. 숫자에 따라 다를 뿐이라고 생각합니다. 사실, 일부 숫자는 프로그래밍하는 동안 자주 발생합니다. 숫자가 내가 익숙한 1에 가까우면 첫 번째 방법을 사용합니다(예: 32'770은 32'768 + 2이고 0x8000 + 0x2=0x8002라는 것을 알고 있습니다).
바이너리의 경우 동일한 접근 방식을 사용할 수 있습니다. 기본은 16이 아닌 2이며 위치의 수는 빠르게 증가할 것입니다. 두 번째 방법을 사용하면 0 또는 1을 적어야 하는 경우 매우 쉽게 볼 수 있다는 이점이 있습니다. 2로 나누면 나머지는 짝수이면 0이고 홀수이면 1입니다.
41029 / 2 = 20514 remainder 1
20514 / 2 = 10257 remainder 0
10257 / 2 = 5128 remainder 1
5128 / 2 = 2564 remainder 0
2564 / 2 = 1282 remainder 0
1282 / 2 = 641 remainder 0
641 / 2 = 320 remainder 1
320 / 2 = 160 remainder 0
160 / 2 = 80 remainder 0
80 / 2 = 40 remainder 0
40 / 2 = 20 remainder 0
20 / 2 = 10 remainder 0
10 / 2 = 5 remainder 0
5 / 2 = 2 remainder 1
2 / 2 = 1 remainder 0
1 / 2 below 0 remainder 1결과를 오른쪽에서 왼쪽으로 기록합니다. %1010000001000101
4개로 그룹화:
%1010000001000101
%101000000100 0101
%10100000 0100 0101
%1010 0000 0100 010116진수로 변환: 0xA045
%1010000001000101을 3으로 그룹화하고 8진수로 변환합니다.
%1010000001000101
%1010000001000 101
%1010000001 000 101
%1010000 001 000 101
%1010 000 001 000 101
%1 010 000 001 000 101
%001 010 000 001 000 101
1 2 0 1 0 5 --> 0120105
So: %1010000001000101 = 0120105 = 0xA045 = 41029
Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029(10)
Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029처음에는 숫자를 더하는 동안 소수점 형식으로 변환한 다음 더하기를 수행한 후 다시 원래 형식으로 변환합니다. 다른 넘버링 시스템을 자주 사용하다 보면 사용하는 베이스에서 바로 산술을 할 수 있게 되는 것을 볼 수 있습니다. 모든 표현에서 동일합니다. 오른쪽에 숫자를 더하고 결과에서 가장 오른쪽 숫자를 적고 나머지 숫자는 기억하고 다음 라운드에서 사용하십시오. 오른쪽에서 두 번째 숫자로 계속 진행합니다.
%1010 + %0111 --> 10 + 7 --> 17 --> %00010001
될 것입니다
%1010
%0111 +
||||
|||+-- add 0 + 1, result is 1, nothing to remember
||+--- add 1 + 1, result is %10, write down 0 and remember 1
|+---- add 0 + 1 + 1(remembered), result = 0, remember 1
+----- add 1 + 0 + 1(remembered), result = 0, remember 1
nothing to add, 1 remembered, result = 1
--------
%10001 is the result, I like to write it as %00010001낮은 값의 경우 직접 계산한 다음 계산기로 확인하십시오. 직접 계산을 하면 할수록 실수하지 않았다는 것을 알게 될 것입니다. 결국, 십진수에서 하는 것처럼 쉽게 다른 기수에서 미적분을 하게 될 것입니다.
숫자가 커지면 컴퓨터가 단지 좋은 이름을 갖기 위해 컴퓨터라고 불리는 것이 아님을 깨달아야 합니다. 사용할 수 있는 다양한 계산기가 있습니다. 사용하십시오. Unix의 경우 Binary Calculator의 줄임말인 bc를 사용할 수 있습니다. 십진법뿐만 아니라 사용하고 싶은 모든 기준(이진법 중에서)을 계산합니다.
Windows 사용자: 계산기를 시작하고(시작->프로그램->액세서리->계산기) 필요한 경우 보기->과학을 클릭합니다. 이제 공학용 계산기가 있고 2진법 또는 16진법으로 계산할 수 있습니다.
예제와 설명이 마음에 드셨기를 바랍니다. 그렇다면 다른 사람들이 기본적인 질문을 할 때 이 문서를 가리키도록 도와주십시오. 그들은 답을 얻을 뿐만 아니라 동시에 훨씬 더 많은 것을 배울 것입니다.
알렉스 반 덴 보가에르트 alex@vandenbogaerdt.nl