16 진법이란 무엇입니까?


13

16 진 시스템이란 무엇이며 왜 컴퓨팅에 그렇게 많이 사용됩니까? 컴퓨터가 0과 1을 사용하여 데이터를 저장한다는 것을 알고 있는데 어떻게 16 진수를 사용합니까?


13
주제가 아닌 경우, 이러한 기본 질문은 어떻게 슈퍼 사용자가 시작된 후 5 년이 지나지 않습니까?
피터 Mortensen

3
@PeterMortensen 더 이상하게도, 그것은 적어도 내가 찾을 수없는 자매 사이트에서 아직 묻지 않았습니다.
Nzall

9
그것은 위키 백과는 꽤 좋은 답변을 가지고로 질문 할 필요가 없습니다 수 있음 : en.wikipedia.org/wiki/Hexadecimal
피어스 마이어스

4
왜 그렇게 많은 투표를합니까?
Vi.

답변:


31

16 진법은 컴퓨팅에서 매우 일반적인 숫자 시스템입니다. 1과 0 만있는 바이너리에 대해 들어봤을 것입니다 .

인간은 대부분 10 진법 (10 진법)을 사용합니다 .

0, 1, 2, 3, 4, 5, 6, 7, 8 및 9

그러나 컴퓨터는 십진법을 사용하여 작동하지 않습니다. 그것들은 이진 상태 (무언가 또는 거짓)를 가지고 있으므로 밑이 2 (이진 숫자는 일반적으로 0b로 시작)에서 작동하며 유일한 숫자는 0과 1입니다.

초기에는 8 진법 (또는 8 진법 )이 사용되었습니다. 기수 8의 "10"은 이진수 "0b1000"(10 진수 10은 이진수 1010)이므로 좋았습니다. 8 진수는 일반적으로 숫자를 쓸 때 "0o"로 시작하지만 대부분의 프로그래밍 언어에서는 '0'으로 시작합니다. 우리는 8 개의 숫자가 있기 때문에 base 8이라고합니다.

Octal은 오늘날 Unix와 Linux에서 권한설정할 때 여전히 사용되고 있습니다.

시간이 지남에 따라 컴퓨팅 성능과 공간이 급격히 증가함에 따라 더 큰 숫자를 표현하는 더 쉬운 방법이 필요했습니다. 그것은 사용에 대한 표준이 진수 (8)는 쉽게 자리 별 숫자 변환을 수행 할 수 2의 전원이처럼 (참조, 16 때문에, 또는 기본 (16) 이 댓글 , 문자가 사용되었다 (16 개) 숫자가 .Because을 또한 16 진수는 보통 0x로 시작합니다.

16 진수는 16 진수가 4 비트 (1 개의 8 진수는 2를 나타낼 수 있음)이므로 바이트에서 2 개의 숫자이므로 유용합니다. 대부분의 16 진 편집기 에서는 바이트가 표시되는 방식입니다.

계산

밑 10에는 10 개의 숫자가 있습니다. 9 세 이후에는 어떻게해야합니까? 우리는 숫자가 없습니다. 우리는 원래 숫자의 왼쪽에 "수십"자리를 만들고, 1이되고 가장 오른쪽이 0이됩니다. 16 진수에서도 같은 일이 발생합니다.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11 등

0x1F에 도달 할 때까지 프로세스는 0xFF (십진수 255)까지 반복되고 0x100이됩니다. 계산에 대한 자세한 내용은 여기를 참조하십시오 .

다음은 10 진수, 16 진수, 8 진수 및 2 진수 간의 변환을 보여주는 차트입니다. 16 진 변환 표


21
주요 이점은 16은 2의 거듭 제곱이므로 숫자 단위 변환을 수행 할 수 있다는 것입니다.
TRiG

2
많은 언어 가 8 진수가 0아닌 접두사를 사용합니다 0o.
ysap

2
16 의 2 의 배수 에 대한 메모가 TRiG의 주석에서 잘못 복사되었습니다. 배수가되는 것은 관련이 없습니다.
Ryan Reich

2
@ justcool393, "base 10"이라고 부르는 이름이 실제로 "십진법"이라고 언급 할 가치가 있습니다. 이것은 기수 8 (8 진수), 기수 10 (10 진수)과 16 (16 진수) 사이의 관계를 명확하게하는 데 도움이 될 수 있습니다.
HalosGhost

3
Arrrg. 모든 기지는 기지 10입니다! stale.soup.io/post/114652207/every-base-is-base-10
woliveirajr

4

16 진법이란?

16 진수 시스템은 0123456789ABCDEF2 ( 01) 를 사용하는 2 진 또는 10 (0-9)을 사용하는 10 진과 달리 16 자리 ( ) 를 사용하는 16 진수 체계입니다 . (시스템에는 10 자리 숫자 만 있기 때문에) A에서 F까지의 문자는 대신 "자리 # 10", "자리 # 11"등을 설명하는 데 사용됩니다.

왜 컴퓨팅에서 그렇게 많이 사용됩니까?

16은 2의 거듭 제곱으로, 16 진수를 이진수로 쉽게 변환 할 수 있으며, "컴퓨터는 0과 1을 사용하여 데이터를 저장합니다." 각 숫자는 정확히 4 비트의 데이터를 저장하기 때문에 16 진 숫자는 매우 쉽게 4 개의 이진수 (1 비트)로 변환 될 수 있습니다.

| hex bin  | hex bin  |
| 0   0000 | 8   1000 |
| 1   0001 | 9   1001 |
| 2   0010 | A   1010 |
| 3   0011 | B   1011 |
| 4   0100 | C   1100 |
| 5   0101 | D   1101 |
| 6   0110 | E   1110 |
| 7   0111 | F   1111 |

우리는 어떻게 16 진수를 사용합니까

이진보다 큰 숫자를 쉽게 표현할 수 있습니다. 다음과 같이 두 개의 16 진수 만 256 개의 다른 값을 나타낼 수 있습니다.

dec  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
hex 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 ...

4 개의 16 진수는 65536 값 등을 나타낼 수 있습니다. Hex는 문자, 숫자 및 문장 부호가 각 문자를 0에서 256 사이의 숫자 ( ASCII 또는 다른 인코딩을 사용하여)로 매핑하는 형식으로 저장되므로 hexdump 라는 것으로 데이터를 훨씬 쉽게 검사 할 수 있습니다. 또한 PNG와 같은 다른 많은 파일 형식은 파일이 구성된 각 정보가 256 비트를 포함하도록 조정됩니다.

요약하면 16은 2의 거듭 제곱이고 256은 16의 거듭 제곱입니다. 이는 이진수와 텍스트 또는 기타 데이터를 모두 나타내는 좋은 방법입니다.


2

16 진법이란 무엇입니까?

abcd 숫자가 있으면 ((a * + b) + c) + d와 같습니다. 따라서 이것은 다음과 같습니다

  • abcd (이진) = ((a * 2 + b) * 2 + c) * 2 + d
  • abcd (octal) = ((a * 8 + b) * 8 + c) * 8 + d
  • abcd (10 진수) = ((a * 10 + b) * 10 + c) * 10 + d
  • abcd (16 진수) = ((a * 16 + b) * 16 + c) * 16 + d

16 진법에서는 16 자리가 필요하지만 10 자리 만 사용할 수 있습니다 (0..9). 따라서 누락 된 6 자리의 경우 A..F 문자는 A = 10, ..., F = 15와 함께 사용됩니다.

물론 5 또는 7의 밑줄과 같은 다른 많은 숫자 시스템에 대해서도 생각할 수 있습니다.

숫자로 계산하는 경우 사용중인 기준이 중요하지 않습니다. 이진 시스템에서 더하고 곱할 수 있으며, 십진 시스템에서 할 수 있고 16 진 시스템에서 할 수 있습니다. 우리는 십진법으로 계산하는 데 사용되며 컴퓨터는 이진법으로 계산합니다.

16 진수 시스템이 컴퓨팅에 왜 그렇게 많이 사용됩니까?

위에서 말했듯이 어떤 숫자 체계에 숫자를 주느냐는 중요하지 않습니다. 기본 숫자는 동일하며 표현 만 변경됩니다. 컴퓨터는 내부적으로 항상 이진수로 숫자를 저장하고 사용합니다 (예 : 계산).

그렇다면 왜 나와 같은 프로그래머가 다른 숫자 시스템을 사용합니까? 2의 거듭 제곱을 기반으로 숫자 시스템을 선택해야하는 두 가지 이유가 있습니다. 첫 번째는 짧고 두 번째는 어떤 비트가 설정되어 있는지 잘 보여줍니다.

부족

버퍼의 내용을 콘솔에 쓰는 함수가 있다면 10 진수로 인쇄하는 코드를 작성할 수 있습니다 .1 ~ 3 자리 (10 진수 : 0..255). 이진수 형식으로 숫자를 쓰면 1 ~ 8 자리 (이진수 : 0..11111111)의 출력으로 끝납니다. 8 진수 시스템을 사용하여 1 ~ 3 자리 (8 진수 : 0..377)로 끝나거나 1 ~ 2 자리 (16 진수 : 0..ff)로 16 진수를 만들 수도 있습니다.

이것은 1 바이트 전용이었습니다. 이제 32 비트 숫자를 쓰고 싶다고 가정 해 봅시다.

  • 이진 : 0..11111111111111111111111111111111
  • 8 진 : 0..37777777777
  • 십진수 : 4294967295
  • 16 진수 : 0..ffffffff

보시다시피 16 진 출력이 가장 짧습니다.

비트를보고

압축 된 정보를 저장하는 일반적인 패턴은 각 비트를 바이트 단위로 개별적으로 사용하는 것입니다. 파일 속성의 예를 보자 ( MDSN 참조 ). "숨김", "보관", "읽기 전용", "임시"및 기타 속성을 원합니다. 각 속성을 1 바이트에 저장하거나 정보를 1 바이트 (또는 여러 바이트)로 묶을 수 있습니다. 여기서 각 비트는 정확히 하나의 속성을 나타냅니다. MSDN 기사에서 dwFlagsAndAttributes를 보면 Windows 가이 패턴을 사용하고 있음을 알 수 있습니다.

MSDN 페이지에 FILE_ATTRIBUTE_ENCRYPTED머무르면이 플래그는 10 진수 16384, 16 진수 0x4000입니다. 앞의 "0x"는 16 진수를 표시하는 C 프로그래머의 규칙이므로 4000 만 살펴 보겠습니다. 어떤 비트가 설정되어 있는지 알고 싶다면 16384를 이진으로 먼저 변환해야합니다. 일반적으로 정신 산술과 관련이 있습니다. 그러나 16 진수 4000을 봅시다. 이것은 매우 쉽습니다. 16은 2 * 4이므로 모든 16 진수는 정확히 4 비트입니다. 따라서 우리는 4를 이진 0100으로, 0을 이진 0000으로 변환하면 끝납니다.

종종 개별 비트에 관한 것이 아니라 프로그래머가 사물을 2의 거듭 제곱에 맞추는 경향이 있습니다. 우리는 임의의 주소가 아니라 16 비트의 최하위 비트가 0으로 설정된 주소에 프로그램을로드하는 것을 좋아합니다. 이렇게하면 주소가 0x12345678 인 경우이 주소가 0x1234에로드 된 프로그램이 아니라 0x03810000에로드 된 프로그램이 아니라는 것을 쉽게 알 수 있습니다.

이진수, 8 진수 또는 16 진수를 선호하십니까?

그것은 맛의 문제입니다. 비트 바이너리를 직접보고 싶다면 괜찮을 것입니다. 긴 숫자의 경우 비트 23 또는 비트 24가 설정되어 있는지 확인하기 위해 숫자를 계산해야 할 경우 이진이 좌절 될 수 있습니다. 각 숫자가 4 비트를 나타내므로 계산이 적어 지므로 16 진법이 더 쉽습니다. 개인적으로는 8 진법을 거의 사용하지 않습니다. 매우 드문 일입니다.

그러나 base 32를 사용하지 않는 이유는 무엇입니까?

기지 32는 2의 거듭 제곱입니다. 그러나 0..9, A..V.와 같은 32 자리가 필요합니다. 이것은 기억해야 할 더 많은 자릿수입니다 ( 'S'가 어떤 숫자에 반응하는지 쉽게 알 수 있습니까?). 또 다른주의 사항은 32 자릿수를 사용하면 두 개의 16 진수가 정확히 1 바이트라는 멋진 기능을 잃어 버리는 것입니다. 메모리 내용을 살펴보면 정말 편리합니다! 또한 base 32의 경우 1 바이트가 가질 수있는 값을 나타내려면 여전히 2 자리 숫자가 필요합니다. 32 비트 값의 경우 8 개의 16 진수 대신 7 자리 만 있으면되지만 기본 32 시스템의 단점으로는 그다지 많지 않습니다.


1

오늘날 사용되는 다른 숫자 표현 시스템은
이진수, 8 진수, 10 진수 및 16 진수입니다.
어떤 것을 선택해야 하는가는 종종 당면 과제에 대한 사용 편의성에 달려 있습니다.

바이너리 는 전자 시스템 내에서 표현하기 쉽기 때문에 일반적으로 컴퓨터 시스템 및 디지털 기술에서 사용됩니다. on / off, true / false 또는 기타 유사한 반복되는 2 상태 정보의 표현과 같이 base-2 숫자에 대한 함수는 쉽게 구축 할 수 있습니다.

예를 들어 Unix / Linux의 권한 설정에서와 같이 3 개의 이진수 그룹이있는 경우 8 진수를 사용하는 것이 좋습니다.

16 진수를 잠시 건너 뛰면 16 진수 는 8 진수와 같은 방식이지만 4 개의 이진수에 적합하며 8 비트, 1 바이트는 2 개의 16 진수에 잘 맞습니다. ( 답 = )
이 컴퓨터에서 짝수 8 비트 그룹이 쉽게 적어 표현되고 이해되는 다음의 프로필 -하다; 소프트웨어 작성, 데이터 처리 (예 : HTML / CSS의 RGB 색상 값), 데이터 구조 및 기타 유사한 구성을 수행 할 때 매일 사용하는 데 매우 편리합니다.

십진수 . 우리는 십진법이 우리가 10 개의 손가락과 발가락을 가지고 있다는 사실로부터 발전했다고 추측 할 수 있습니다. 한 자리수는 계산 된 항목 수를 나타내며 각 손가락 당 최대 10 개까지 계산됩니다.

이들은
2, 8, 10 및 16 의 기초를 가진 숫자 시스템을 나타냅니다 .

일반적으로 기본은 계산할 수있는 한 자리 "항목"수를 나타냅니다 (예 : 이진수는 2, 소수는 10
16 진수에는 16 개의 단일 숫자 항목이 있으므로 시스템에는 16 개의 "숫자"가 필요하므로 0-9와 af (10과 비교하여 6 개의 여분)를 사용합니다. 여기서 "a"는 10이고 "f"는 10 진수 시스템에서 15입니다.

일반 모드를 계속하려면 : 한 자릿수가 잘 표시되어 있는 한 기본 2 이상 은 작동합니다.

소수점 이하 자릿수는 다음과 같이 구성됩니다.

... d * 10³ + c * 10² + b * 10¹ + a * 10⁰

10 진수 "dcba"-d, c, b, a, 0123456789에서 선택

이제 다음으로 변경하십시오.

... d * base³ + c * base² + b * base¹ + a * base⁰

베이스 2 이상이 "작동하는"방법을 보여주는보다 일반적인 형태입니다.
예를 들어 5 자리, 5 자리는 위의 다른 어느 것보다 편리 할 수 ​​있습니다. 또는 왜 12 자리 (1 대) 시스템이 시간 (12 시간 = "10"자리 12, 첫 번째 "소수"는 시간의 1/12 번째 [5 분])

참고 : ⁰¹²³-화면에 다른 내용이 표시되면 위첨자 0123


현재 이것은 실제로 될 수있는 것의 '스텁'일 수 있습니다.
Hannu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.