16진수

Hexadecimal

수학과 컴퓨팅에서 16진법(기본값 16 또는 단순 16진법)은 16의 기수를 사용하여 숫자를 나타내는 위치 숫자 체계입니다.10개의 기호를 사용하여 숫자를 나타내는 십진법과는 달리, 16진법은 16개의 구별된 기호를 사용합니다. 대부분의 경우 기호 "0"–"9"는 값 0에서 9를 나타내고 "A"–"F"는 10에서 15까지의 값을 나타냅니다.

소프트웨어 개발자 및 시스템 설계자는 16진수를 널리 사용합니다.이는 16진수가 이진 코드화된 값을 인간 친화적으로 표현하기 때문입니다.각 16진수는 니블(또는 니블)이라고도 하는 4비트(2진수)를 나타냅니다.예를 들어, 8비트 바이트는 00000000 ~ 111111 범위의 값을 이진 형식으로 가질 수 있으며, 16진수로 00 ~ FF로 쉽게 나타낼 수 있습니다.

수학에서 첨자는 일반적으로 밑수를 지정하는 데 사용됩니다.예를 들어, 10진수치 39,451은 16진수로 9A1B로16 표시됩니다.프로그래밍에서는 16진수 숫자를 나타내기 위해 많은 표기법이 사용됩니다.보통 프리픽스가 포함됩니다.프리픽스0x이 값은 C에서 사용됩니다.0x9A1B.

16진수는 전송 부호화 Base16에서 사용됩니다.보통 텍스트의 각 바이트는 2개의 4비트 값으로 분할되어 2개의 16진수로 표시됩니다.

표현

진술서

대부분의 현재 사용 사례에서 문자 A–F 또는 문자 a–f는 10–15를 나타내며 숫자 0–9는 10진수 값을 나타내는데 사용됩니다.

소문자 또는 대문자를 사용하는 보편적인 규약은 없기 때문에 커뮤니티 표준 또는 규약에 따라 각 규약이 널리 보급되거나 특정 환경에서 선호됩니다.혼재된 대소문자도 사용됩니다.7 세그먼트 디스플레이는 대소문자가 혼재된AbCd를 사용합니다.EF는 서로 구별할 수 있는 숫자를 만듭니다.

긴 목록에서 16진수 값을 구분하기 위해 쉼표나 다른 구두점이 아닌 공백을 사용하는 표준화가 있습니다.예를 들어 다음 16진수 덤프에서는 각 8비트바이트는 공백이 있는2자리 16진수입니다만, 선두의 32비트 오프셋은 8자리 16진수입니다.

00000000  57 69 6b 69 70 65 64 69  61 2c 20 74 68 65 20 66   00000010  72 65 65 20 65 6e 63 79  63 6c 6층 70 65 64 69 61   00000020  20 74 68 61 74 20 61 6e  79 6층 6e 65 20 63 61 6e  00000030  20 65 64 69 74 0a 

소수점 구분

베이스가 명확하지 않은 컨텍스트에서는 16진수가 애매하고 다른 베이스로 표현되는 숫자와 혼동될 수 있습니다.값을 명확하게 표현하기 위한 몇 가지 규칙이 있습니다.숫자 첨자(자체 10진수 표기)는 기저를 명시적으로 나타낼 수 있습니다.159는1016 10진수 159, 159는 16진수 159로 345와10 같습니다.일부decimal 저자는 텍스트 첨자(예hexd: 159h 및 159 또는 159 및 159)를 선호합니다.

도널드 크누스는 그의 책 The [1]TeXbook에서 특정 기수를 나타내기 위해 특정 서체를 사용하는 것을 소개했다.16진수 표현은 타이프라이터 서체로 기재되어 있습니다.5A3

대부분의 컴퓨터 프로그래밍 환경에서 사용되는 것과 같은 선형 텍스트 시스템에서는 다음과 같은 다양한 방법이 생겨났습니다.

  • Unix(및 관련) 셸, AT&T 어셈블리 언어 및 마찬가지로 C 프로그래밍 언어(및 C++, C#, Go, D, Java, JavaScript, Python, Windows PowerShell 의 구문 하위 언어)는 접두사를 사용합니다.0x숫자 상수가 16진수로 표시되는 경우:0x5A3. 문자와 문자열 상수는 접두사로 문자 코드를 16진수로 나타낼 수 있습니다.\x그 뒤에 두 자리 16진수가 나옵니다.'\x1B'Esc 제어 문자를 나타냅니다."\x1B[0m\x1B[25;1H"는 2개의 Esc [2]문자를 포함한 11개의 문자를 포함하는 문자열입니다.printf 함수 패밀리를 사용하여 정수를 16진수로 출력하려면 형식 변환 코드%X또는%x사용됩니다.
  • URI(URL 포함)에서는 문자코드는 프리픽스가 붙은 16진수 쌍으로 작성됩니다.%:http://www.example.com/name%20with%20spaces어디에%20공백(공백) 문자의 코드입니다.ASCII 코드 포인트 20은 16진수, 32는 10진수입니다.
  • XML 및 XHTML에서는 문자를 16진수 숫자 참조로 표시할 수 있습니다.&#xcode;,예를 들어.’는 U+2019 문자(오른쪽 작은따옴표)를 나타냅니다.없는 경우x숫자는 10진수(소수)입니다.’같은 [3]문자입니다).
  • Unicode 표준에서는 문자 값은 다음과 같이 표시됩니다.U+16진수 값 뒤에 이어집니다.U+20AC유로 기호(€)입니다.
  • HTML, CSS 및 X 창의 색상 참조는 6자리 16진수(빨간색, 녹색 및 파란색 컴포넌트의 경우 각각 2자리씩 순서대로) 앞에 다음과 같이 표시할 수 있습니다.#: 예를 들어 흰색은 다음과 같이 표시됩니다.#FFFFFF.[4] CSS에서는 컴포넌트당16진수로3자리 생략도 가능합니다.#FA3은 #FFAA33(황금 오렌지색: 를 참조해 주세요.
  • 따옴표로 묶은 MIME(전자 메일 확장자) 부호화에서는 문자 코드는 프리픽스가 붙은 16진수 쌍으로 작성됩니다.=:Espa=F1a는 「Espana」입니다(F1은 ISO/IEC 8859-1 문자 집합의 nn 코드입니다).[5]
  • Intel에서 파생된 어셈블리 언어 및 Modula-2에서는 [6]16진수는 H 또는h접미사로 표시됩니다.FFh또는05A3H일부 구현에서는 첫 번째 16진수 문자가 10진수가 아닌 경우 선행 0이 필요합니다.따라서 다음과 같이 쓸 수 있습니다.0FFh대신FFh기타 일부 구현(NASM 등)에서는 C스타일의 번호를 사용할 수)를 사용할 수 있습니다.0x42).
  • 기타 어셈블리 언어(6502, Motorola), Pascal, Delphi, BASIC(Commodore), GameMaker Language, Godot Forth 사용$프리픽스로서:$5A3.
  • 일부 어셈블리 언어(마이크로칩)는 다음 표기를 사용합니다.H'ABCD'( ABCD의 경우16).마찬가지로 Fortran 95는 Z'를 사용합니다.ABCD'입니다.
  • AdaVHDL은 16진수를 "숫자 따옴표"로 묶습니다.16#5A3#비트 벡터 상수의 경우 VHDL은 다음 표기를 사용합니다.x"5A3"를 클릭합니다.[7]
  • Verilog는 다음 형식으로 16진수 상수를 나타냅니다.8'hFF여기서 8은 값의 비트 수이고 FF는 16진수 상수입니다.
  • Smalltalk 언어는 접두사를 사용합니다.16r:16r5A3
  • PostScriptBourne 쉘 및 그 파생어는 프리픽스가 붙은 16진수를 나타냅니다.16#:16#5A3PostScript의 경우, 2진수 데이터(이미지 픽셀 등)는 수정되지 않은 연속된 16진수 쌍으로 표현될 수 있습니다.AA213FD51B3801043FBC...
  • Common Lisp는 프레픽스를 사용합니다.#x그리고.#16r변수 *read-base*[8] 와 *print-base*[9] 를 16 으로 설정하면, 공통의 Lisp 시스템의 리더와 프린터를 16 진수치로 변환해 숫자를 읽거나 인쇄할 수도 있습니다.따라서 입력 베이스 또는 출력 베이스가 16으로 변경된 경우 #x 또는 #16r 프리픽스코드를 사용하지 않고 16진수를 표시할 수 있습니다.
  • MSX BASIC,[10] QuickBASIC, FreeBASIC Visual Basic 프리픽스16 진수&H:&H5A3
  • BBC BASIC 및 Loconotive BASIC 사용&16진수일 경우.[11]
  • TI-89 및 92 시리즈는0h접두사:0h5A3
  • ALGOL 68은 프리픽스를 사용합니다.16r16진수를 나타냅니다.16r5a32진수, 4진수(베이스-4) 및 8진수를 동일하게 지정할 수 있습니다.
  • 기존 OS(zOS, zVSE, zVM, TPF, IBM i)를 실행하는 IBM 메인프레임(zSeries) 및 미드레인지 컴퓨터(IBM i)에서 가장 일반적인 16진수 형식은 다음과 같습니다.X'5A3'어셈블리, PL/I, COBOL, JCL, 스크립트, 명령어 및 기타 장소에서 사용됩니다.이 형식은 다른 (지금은 사용되지 않는) IBM 시스템에서도 일반적이었습니다.아포스트로피 대신 따옴표를 사용하는 경우가 있습니다.
  • 임의의 IPv6 주소는, 4 자리수의 16 진수로 이루어진 8 개의 그룹(일명, 16 진수로 불린다)으로 쓸 수 있습니다.각 그룹은 콜론으로 구분됩니다.:예를 들어, 이것은 유효한 IPv6 주소입니다.2001:0db8:85a3:0000:0000:8a2e:0370:7334또는 0을 제거함으로써 다음과 같이 단축됩니다.2001:db8:85a3::8a2e:370:7334(통상, IPv4 주소는 10 진수입니다).
  • 글로벌하게 일의인 식별자는 32자리 16진수로 작성됩니다.대부분은 하이픈으로 구분된 부등분할된 그룹화입니다.3F2504E0-4F89-41D3-9A0C-0305E82C3301.

10-15 및 대부분 다른 기호 세트에 대한 기타 기호

9 이상의 숫자를 나타내기 위해 문자 A에서 F를 사용한 것은 컴퓨터의 초기 역사에서 보편적이지 않았다.

  • 1950년대에 Bendix-14와 같은 일부 설치에서는 10-15의 값을 0, 1, 2, 3, 4, 5로 나타내기 위해 0 ~ 5의 숫자를 오버라인과 함께 사용하는 것이 선호되었습니다.
  • SWAC(1950)[12]Bendix G-15(1956)[13][12] 컴퓨터는 10 ~15 의 값으로 소문자 u, v, w, x, y z 를 사용했습니다.
  • ORDVACILIAC I(1952) 컴퓨터(및 BRLESC 등 일부 파생 설계)는 10 ~ 15의 [14][12]값에 대문자 K, S, N, J, F L을 사용했습니다.
  • Librascope LGP-30(1956)에서는 10 ~[15][12]15의 값에 F, G, J, K, Q W 문자를 사용했습니다.
  • PERM(1956) 컴퓨터에서는 16진수가 0의 경우 O, A에서 N, P에서 1~15의 경우 O로 표기되어 있습니다.많은 기계 명령이 니모닉 16진수 문자(A=add, M=sq, L=load, F=sq-point 등)를 가지고 있었고 프로그램은 명령 이름 [16]없이 작성되었습니다.
  • Honeywell Datamatic D-1000(1957)은 소문자 b, c, d, e, f g를 사용했지만, Elbit 100(1967)은 10 ~15 [12]의 값에 대문자 B, C, D, E, F G 를 사용했습니다.
  • Monrobot XI(1960)는 10에서 [12]15까지의 값에 S, T, U, V, W X 문자를 사용했습니다.
  • NEC 매개변수 컴퓨터 NEAC 1103(1960)은 10-15의 [17]값에 D, G, H, J, K(그리고 가능한 경우 V) 문자를 사용했다.
  • Pacific Data Systems 1020(1964)에서는 10 ~15의 [12]값에 L, C, A, S, M 및 D 문자를 사용했습니다.
  • 1968년 Boby Lapointe에 의해 비비 바이너리 표기법에 새로운 숫자 기호와 이름이 도입되었다.이 표기법은 그다지 인기를 끌지 못했다.
브루스 앨런 마틴의 16진 표기법[18] 제안
  • Brookhaven 국립연구소의 Bruce Alan Martin은 A-F의 선택을 "말도 안 된다"고 생각했다.1968년 CACM 편집자에게 보낸 편지에서 그는 비트 위치에 기초한 완전히 새로운 기호 세트를 제안했지만 크게 [18]받아들여지지 않았다.
  • 1972년 Rowco Engineering Co.의 R. O. Whitaker는 "부호화 행렬에 관계없이 컴퓨터로부터의 입출력을 모두 허용"하기 위해 "직접 바이너리 읽기"를 허용하는 삼각 글꼴을 제안했다.
  • 일부 7 세그먼트 디스플레이 디코더 칩(74LS47)은 0 ~9만을 올바르게 [20]생성하도록 설계된 로직으로 인해 예기치 않은 출력을 나타냅니다.

구두 및 디지털 표현

10에서 15까지의 수량을 나타내는 전통적인 숫자가 없었기 때문에, 알파벳 문자를 대체하기 위해 다시 사용되었습니다.대부분의 유럽 언어에는 11에서 15까지의 숫자에 대한 10진법이 없는 단어들이 있다.어떤 사람들은 전화번호처럼 16진수 숫자를 한 자릿수씩 읽거나 나토 음성 문자, 합동 육해군 음성 문자 또는 이와 유사한 애드혹 시스템을 사용한다.IBM System/360 프로그래머들 사이에서 16진법이 채택되자, Magnuson(1968)[21]은 16진법 문자에 짧은 이름을 붙이는 발음 가이드를 제안했습니다. 예를 들어, "A"는 "ann", "Bet", "C "chris"[21] 등으로 발음됩니다.또 다른 명명 체계는 밥(2015)이 실리콘 [22]밸리의 농담을 바탕으로 정교하게 고안했다.그러나 Rogers(2007)[23]는 실제 숫자에 A~F가 포함되지 않은 경우에도 어떤 경우에도 구두 표현을 구별할 수 있도록 하는 또 다른 명명 체계를 온라인에 게시했다.다음 표에 예를 나타냅니다.

또, 「dit」와 「dah」는 각각 0과 1을 나타내, 「0000」은 「dit-dit-dit-dit-dit」(…), 「dah-dit-dit-dah(-)」(-)의 음성이 9의 자릿수를 나타내도록, 4비트의 16진수 표기법을 사용하는 것을 제안하고 있습니다.5.

16진수 핑거 카운트 방식

숫자를 세는 시스템은 이진법과 16진법 모두에 대해 고안되었습니다.아서 C. 클라크는 각 손가락을 온/오프 비트로 사용하여 10개의 손가락에 [24]0부터 1023까지10 손가락을 셀 수 있도록 할 것을 제안했다.오른쪽에는 FF까지 카운트하는 다른 시스템16(255)이10 예시되어 있다.

매그너슨(1968년)[21]
명명법
번호 발음
A
B 틀림없다
C 크리스
D
E 어니스트
F 서리
1A anneen
A0 앤티
5B 오십베트
A01C 앤티 크리스틴
AD0년 1회 앤틴 닷티
3A7D 삼십칠 도트
로저스 (2007)[23]
명명법
번호 발음
A 10
B 일레븐
C 12
D 끌어당기다
E 엡트윈
F fim
10 문자 메시지
11 오네크
1층 핀텍
50 피프텍
C0 트웰프텍
100 하드렉
1000 밧세크
3E 티르텍펩트윈
E1 엡테크원
C4A 12훈트렉-4텍텐
1743 일촉즉발의
- 훈드레크-4텍-3

징후

16진수 시스템은 10진수와 같은 방식으로 음수를 표현할 수 있습니다. -2A는 -42를 나타내는10 등입니다.

16진수는 프로세서에서 사용되는 정확한 비트 패턴을 나타내기 위해서도 사용할 수 있기 때문에 16진수의 시퀀스는 부호 있는 값 또는 부동 소수점 값을 나타낼 수 있습니다.이와 같이 음수 -42는10 32비트 CPU 레지스터에서는 FFFF FFD6(2's-completment)로, 32비트 FPU 레지스터에서는 C228 0000 또는 64비트 FPU 레지스터에서는 C045 0000 0000(IEE 부동소수점 표준에서는)으로 쓸 수 있습니다.

16진수 지수 표기법

십진수를 지수 표기법으로 나타낼 수 있는 것처럼 16진수 숫자도 표시할 수 있습니다.관례상 문자 P(또는 "승"의 경우 p)는 2의 거듭제곱을 나타내는 반면, E(또는 e)는 E 표기법의 일부로서 10진수에서 유사한 목적을 가진다.P 뒤의 숫자는 10진수이며 2진수 지수를 나타냅니다.지수를 1 증가시키면 16.10.0p1 = 8.0p2 = 4.0p3 = 2.0p4 = 1.0p5가 아닌 2가 곱됩니다.통상, 숫자는 정규화되어 선두의 16 진수가 1이 됩니다(값이 정확히0이 아닌 한).

예: 1.3DEP42는 1.3을 나타냅니다.DE16 × 24210

IEEE 754-2008 바이너리 부동소수점 표준에서는 16진수 지수 표기법이 필요합니다.이 표기법은 C 프로그래밍 언어의 [25]C99 에디션의 부동 소수점 리터럴에 사용할 수 있습니다. 표기법은 %a 또는 %A 변환 지정자를 사용하여 C99 사양[26]단일 Unix 사양(IEEEE 표준 1003.1) POSIX [27]표준에 따른 printf 함수 패밀리의 구현으로 생성할 수 있습니다.

변환

바이너리

대부분의 컴퓨터는 2진수 데이터를 조작하지만, 인간은 적은 2진수라도 많은 자릿수로 작업하기 어렵다.대부분의 사람은 베이스 10 시스템에 익숙하지만, 각 16진수가 비트(4)의10 정수에 매핑되기 때문에 10진수보다 2진수를 16진수로 매핑하는 것이 훨씬 쉽습니다.이 예에서는 1111을2 베이스 10으로 변환합니다.이진수 숫자의 위치는 1 또는 0 중 하나를 포함할 수 있으므로 오른쪽에서 해당 위치에 따라 값을 쉽게 결정할 수 있습니다.

  • 00012 = 110
  • 00102 = 210
  • 01002 = 410
  • 10002 = 810

그 때문에,

11112 = 8101010 + 4 + 2 + 110
= 1510

연습을 거의 하지 않으면 한 번에 1111을16 F에 매핑하는2 것이 쉬워집니다. 서면 표현참조.10진수가 아닌 16진수를 사용하는 이점은 숫자의 크기에 따라 빠르게 증가합니다.숫자가 커지면 십진수로의 변환은 매우 귀찮습니다.단, 16진수로 매핑할 경우 바이너리 문자열을 4자리 그룹으로 간주하여 각각을1개의 [28]16진수로 매핑하는 것은 간단한 일입니다.

다음 예에서는 이진수를 10진수로 변환하여 각 숫자를 10진수 값에 매핑하고 결과를 추가하는 방법을 보여 줍니다.

(0101111010101010010)2 = 26214410 + 6553610 + 3276810 + 163841010 + 819210 + 204810 + 51210 + 25610 + 6410 + 1610 + 2
= 38792210

이것을 16진수로의 변환과 비교합니다.이 변환에서는 4자리수의 각 그룹을 개별적으로 간주하여 직접 변환할 수 있습니다.

(0101111010101010010)2 = 0101 1110 1011 0101 00102
= 5 E B 5 2개16
= 5EB5216

16진수에서 2진수로의 변환도 마찬가지로 [28]직접적입니다.

기타 간단한 변환

4진수(기본값 4)는 거의 사용되지 않지만 16진수 또는 2진수로 쉽게 변환할 수 있습니다.각 16진수는 한 쌍의 4진수에 대응하고, 각 4진수는 한 쌍의 2진수에 대응한다.위의 예에서는 5 E B 516 2 = 11 32 23 114 02 입니다.

8진수(베이스 8) 시스템은 베이스 2와 베이스 4만큼 쉽게 변환할 수 있습니다.각 8진수는 4자리가 아닌 3자리 이진수에 대응합니다.따라서 중간 변환을 통해 8진수와 16진수 사이를 바이너리로 변환한 후 3진수 또는 4진수 그룹으로 다시 그룹화할 수 있습니다.

소스 베이스의 분할 잔량

모든 베이스와 마찬가지로 소스 베이스에서 정수 나눗셈 및 나머지 연산을 실행함으로써 숫자의 표현을 16진수로 변환하는 단순한 알고리즘이 있습니다.이론적으로 이것은 어떤 기반에서도 가능하지만, 대부분의 인간에게는 십진수만, 그리고 대부분의 컴퓨터에서는 이진수만 이 방법으로 쉽게 처리할 수 있다.

d를 16진수로 나타내는 수치로 하고, 연속 hhii−1...hh는21 숫자를 나타내는 16진수 숫자입니다.

  1. i ← 1
  2. hi ← d mod 16
  3. d ← (d - hi) / 16
  4. d = 0(return seriesi h)이면 i가 증가하고 2단계로 이동합니다.

"16"은 원하는 다른 베이스로 대체할 수 있습니다.

다음은 임의의 숫자를 String 표현에서 16진수로 변환하기 위한 위의 알고리즘의 JavaScript 구현입니다.그 목적은 위의 알고리즘을 설명하는 것입니다.그러나 데이터에 대해 진지하게 작업하려면 비트 연산자를 사용하는 것이 훨씬 더 좋습니다.

기능. 헥스(d) {   변화하다 r = d % 16;   한다면 (d - r == 0) {     돌아가다 토차(r);   }   돌아가다 헥스((d - r) / 16) + 토차(r); }  기능. 토차(n) {   컨스턴트 알파 = "0123456789ABCDEF";   돌아가다 알파.문자(n); } 

덧셈과 곱셈을 통한 변환

곱셈 및 덧셈을 수행하여 최종 표현을 얻기 전에 소스 베이스의 각 플레이스에 플레이스 값의 16진수 표현을 할당하여 변환할 수도 있습니다.예를 들어, 숫자 B3를 변환하려면AD에서 10진수로 16진수를 B(1110), 3(310), A(1010) 및 D(13)의10 자릿수로 나눈 후 각 10진수 표현에p 16을 곱하여 최종 결과를 얻을 수 있습니다(p는 0부터 시작하여 오른쪽에서 왼쪽으로 카운트).이 경우, 다음과 같이 됩니다.

B3AD = (11 × 163) + (3 × 162) + (10 × 161) + (13 × 160)

베이스 10에 45997이 있어요

변환 도구

많은 컴퓨터 시스템은 16진수를 포함한 다양한 방사 간의 변환을 자주 수행할 수 있는 계산기 유틸리티를 제공합니다.

Microsoft Windows에서는 계산기 유틸리티를 Scientific 모드(16진수, 10진수, 8진수2진수)로 설정할 수 있습니다.이 모드에서는 프로그래머가 가장 일반적으로 사용하는 기수 16(16진수), 10(10진수), 8(8진수), 2진수)로 변환할 수 있습니다.Scientific Mode에서 화면상의 숫자 키패드는 "16진수"를 선택하면 활성화되는 16진수 A ~ F를 포함합니다.그러나 16진수 모드에서는 Windows Calculator는 정수만 지원합니다.

기초 산술

덧셈, 뺄셈, 곱셈 및 나눗셈 등의 기본 연산은 일반적으로 사용되는 10진법이나 각 16진법이 4진법에 대응하는 2진법 등의 대체 숫자계로의 변환을 통해 간접적으로 실행할 수 있다.

또는 16진법 자체 내에서 기본 연산을 직접 수행할 수도 있습니다. 즉, 가산/곱셈 테이블과 대응하는 표준 알고리즘( 나눗셈 및 기존 감산 알고리즘 등)에 의존합니다.

실수

유리수

16(10)의16 소인수가 1개밖에 없기 때문에 16진법도 다른 숫자와 마찬가지로 유리수를 나타내는 데 사용할 수 있다.

모든 기준에서 0.1(또는 "1/10")은 항상 자체 번호 체계에서 해당 기준 값의 표현으로 나눈 값과 동일합니다.따라서, 2진수를 위해 1을 2로 나누든지, 16진수를 위해 1을 16으로 나누든지, 이 두 분수는 모두 다음과 같이 쓰여진다.0.1기수 16은 완벽한 정사각형(4)이기2 때문에 16진수로 표현되는 분수는 10진수보다 홀수 주기가 훨씬 많고 (단순한 자리수 이외에는) 순환수가 없습니다.반복 자릿수는 가장 낮은 항의 분모가 기수에 없는 소수 계수를 가질 때 표시됩니다.따라서 16진수 표기법을 사용할 경우 분모가 2의 거듭제곱이 아닌 모든 분수는 무한 반복 자릿수 문자열(예: 3번째 및 5번째)이 됩니다.따라서 16진수(및 2진수)는 유한한 표현 범위 밖에 더 큰 비율이 있기 때문에 유리수를 나타내는 데 10진수보다 덜 편리합니다.

16진수로 명확하게 표현될 수 있는 모든 유리수는 10진수, 십이지수, 십이지수로 표현될 수 있습니다. 즉, 자릿수가 유한한 16진수 역시 다른 기수로 표현될 때 유한한 자릿수를 가집니다.반대로, 후자의 베이스로 명확하게 표현 가능한 것의 극히 일부만이 16진수로 확실하게 표현된다.예를 들어, 10진수 0.1은 16진수에서의 무한 반복 표현 0.19에 해당합니다.그러나 분모에서 2의 거듭제곱을 갖는 분수를 나타내려면 16진수가 십이진수 및 육진수보다 더 효율적이다.예를 들어 0.062510(1/16)는 0.116, 0.0912 및 0;3,45에60 해당합니다.

n 십진수
소인수: 베이스, b = 10: 2, 5;
b - 1 = 9 : 3
16진수
소인수: b = 1610 = 10: 2, b - 1 = 1510 = F: 3, 5
호혜적 소인수 위치 표현
(소수)
위치 표현
(비교 대상)
소인수 호혜적
2 1/2 2 0.8 0.5 2 1/2
3 1/3 3 0.5555...= 0.5 0.3333...= 0.3 3 1/3
4 1/4 2 0.4 0.25 2 1/4
5 1/5 5 0.3 0.2 5 1/5
6 1/6 2, 3 0.2A 0.16 2, 3 1/6
7 1/7 7 0.249 0.142857 7 1/7
8 1/8 2 0.2 0.125 2 1/8
9 1/9 3 0.1C7 0.1 3 1/9
10 1/10 2, 5 0.19 0.1 2, 5 1/A
11 1/11 11 0.1745D 0.09 B 1/B
12 1/12 2, 3 0.15 0.083 2, 3 1/C
13 1/13 13 0.13B 0.076923 D 1/D
14 1/14 2, 7 0.1249 0.0714285 2, 7 1/E
15 1/15 3, 5 0.1 0.06 3, 5 1/F
16 1/16 2 0.1 0.0625 2 1/10
17 1/17 17 0.0F 0.0588235294117647 11 1/11
18 1/18 2, 3 0.0E38 0.05 2, 3 1/12
19 1/19 19 0.0D79435E5 0.052631578947368421 13 1/13
20 1/20 2, 5 0.0C 0.05 2, 5 1/14
21 1/21 3, 7 0.0C3 0.047619 3, 7 1/15
22 1/22 2, 11 0.0BA2E8 0.045 2, B 1/16
23 1/23 23 0.0B21642C859 0.0434782608695652173913 17 1/17
24 1/24 2, 3 0.0A 0.0416 2, 3 1/18
25 1/25 5 0.0A3D7 0.04 5 1/19
26 1/26 2, 13 0.09D8 0.0384615 2, D 1/1A
27 1/27 3 0.097B425ED 0.037 3 1/1B
28 1/28 2, 7 0.0924 0.03571428 2, 7 1/1C
29 1/29 29 0.08D3DCB 0.0344827586206896551724137931 1차원 1/1D
30 1/30 2, 3, 5 0.08 0.03 2, 3, 5 1/1E
31 1/31 31 0.08421 0.032258064516129 1층 1/1F
32 1/32 2 0.08 0.03125 2 1/20
33 1/33 3, 11 0.07C1F 0.03 3, B 1/21
34 1/34 2, 17 0.078 0.02941176470588235 2, 11 1/22
35 1/35 5, 7 0.075 0.0285714 5, 7 1/23
36 1/36 2, 3 0.071C 0.027 2, 3 1/24

무리수

아래 표는 일반적인 비합리적인 숫자의 확장을 10진수와 16진수로 나타냅니다.

번호 위치 표현
십진수 16진수
22(단위 정사각형의 대각선 길이) 1.414213562373095048... 1.6A09E667F3BCD...
33(단위입방체의 대각선 길이) 1.73205080756887293... 1. BB67AE8584CAA...
55 (1×2 직사각형의 대각선 길이) 2.236067977499789696... 2.3C6EF372FE95...
δ(phi, 황금비율=(1+1605)/2) 1.6180339887498948... 1.9E3779B97F4A...
θ (pi, 원의 지름에 대한 원주비율) 3.1415926589793238462643
383279502884197169399375105...
3.243F6A8885A308D313198A2E0
3707344A4093822299F31D008...
e(자연 로그의 밑부분) 2.718281828459045235... 2. B7E151628AED2A6B...
θ (화-모르스 상수) 0.412454033640107597... 0.6996 9669 9669 6996...
θ(조화급수와 자연대수의 한계차) 0.577215664901532860... 0.93C467E37DB0C7A4D1B...

파워

2의 거듭제곱은 16진수로 매우 단순하게 확장된다.2의 첫 번째 16승은 다음과 같습니다.

2개x 가치 값(10진수)
2개0 1 1
2개1 2 2
2개2 4 4
2개3 8 8
2개4 10개hex 열여섯dec
2개5 이십hex 32개dec
2개6 사십hex 64개dec
2개7 팔십hex 128dec
2개8 hex 256dec
2개9 이백hex 512dec
2A10dec(2) 400hex 1024dec
2B11dec(2) 800hex 2048년dec
2C12dec(2) hex 4096dec
2D13dec(2) 2000년hex 8192dec
2E14dec(2) 4000hex 16,384dec
2F15dec(2) 8000hex 32,768dec
21016dec(2) 10000hex 65,536dec

문화사

중국의 전통적인 측정 단위는 16진법이었다.예를 들어, 구 시스템에서 1jīn())은 16tael에 해당합니다.쑨판(중국식 주판)은 덧셈과 [29]뺄셈과 같은 16진수 계산을 수행하는 데 사용할 수 있다.

십이진법과 마찬가지로 16진법을 선호하는 숫자 체계로 승격하려는 시도가 간혹 있었다.이러한 시도는 종종 개별 [30]숫자에 대한 특정 발음과 기호를 제안합니다.일부 제안서는 표준 측정치를 [31][32]16의 배수가 되도록 통일한다.이러한 초기 제안은 1862년에 [33]출판된 산술, 무게, 측정 및 동전의 새로운 체계 프로젝트: 16을 베이스로 한 음계라고 불릴 것을 제안나이스트롬에 의해 제안되었습니다.무엇보다도 나이스트롬은 하루를 16으로 나누는 16진법을 제안하여 하루에 [34]"시간"이 16시간(또는 "10 tims"로 발음됨)이 발생하도록 하였다.

16진수라는 단어는 [35]1952년에 처음 기록되었다.그리스어 헥스 '6'과 라틴어 '10진수'를 합친다는 의미에서 마카롱입니다.라틴어로 된 대체 16진법(기본값 60의 6진법 단어와 비교)은 더 오래되어 적어도 [36]19세기 후반부터 가끔 사용된다.Bendix 문서에서 1950년대에도 여전히 사용되고 있습니다.Schwartzman(1994)은 16진법의 사용이 섹스(sex)[37]의 암시적인 줄임말 때문에 회피되었을 수 있다고 주장한다.Many western languages since the 1960s have adopted terms equivalent in formation to hexadecimal (e.g. French hexadécimal, Italian esadecimale, Romanian hexazecimal, Serbian хексадецимални, etc.) but others have introduced terms which substitute native words for "sixteen" (e.g. Greek δεκαεξαδικός, Icelandic sextándakerfi, Russian шестнадцатерично§ )

용어와 표기법은 1960년대 말까지 정착되지 않았다.1969년 도널드 크누스는 2진수, 3진수, 4진수 등을 모델로 한 "16에 의한 그룹화"를 전달하기 위한 라틴계 용어로 어원학적으로 올바른 용어는 100년 또는 어쩌면 30년이라고 주장했다.크누스의 주장에 따르면, 십진법과 팔진법의 정확한 용어는 각각 [38]십진법팔진법이 될 것이다.알프레드 B.테일러는 "불편한 자리수"[39][40]라는 이유로 16진수를 거부했지만 1800년대 중반 대체 번호 기반에 대한 그의 작업에 300년대를 사용했다.

A부터 F까지를 사용하는 현재 표기법은 1966년부터 IBM System/360용 Fortran IV 설명서가 출판된 이후 사실상의 표준으로 확립되었습니다. Fortran은 (이전 버전의 Fortran과 달리) 16진수 [41]상수 입력 표준을 인식합니다.위에서 설명한 바와 같이 NEC(1960년)와 The Pacific Data Systems 1020(1964년)은 대체 표기법을 사용했다.IBM에 의해 채택된 표준은 1968년까지 널리 채택된 것으로 보인다, Bruce Alan Martin이 CACM의 편집자에게 보낸 편지에서 다음과 같이 불평할 때

"16진수 기호로 문자 A, B, C, D, E, F를 선택하는 터무니 없는 선택으로 인해 8진수(또는 16진수) 숫자와 10진수(또는 변수 이름)를 구별하는 이미 성가신 문제가 추가되면서 숫자 기호를 재고할 시간이 너무 많이 되었습니다.이는 잘못된 선택이 사실상의 기준에 반영되기 전에 이루어졌어야 했습니다.

마틴의 주장은 숫자 0부터 숫자 9를 10진수 이외의 숫자로 사용하는 것은 "10자리 값 체계를 우리에게 암시한다"는 것이었다: "왜 8진수 또는 16진수로 필요한 7자리 또는 15자리 숫자에는 완전히 새로운 기호(및 이름)를 사용하지 않는가?문자 A부터 P까지를 사용하는 것도 개선이지만 완전히 새로운 기호는 시스템의 이진 특성을 반영할 수 있습니다."[18]그는 또한 "숫자에 알파벳 문자를 다시 사용하는 것은 16세기 전 숫자에 대한 구별되고 비알파벳 문자의 발명으로부터 엄청나게 후퇴한 것"이라고 주장했고, 최근ASCII 표준(ASA X3.4-1963과 USAS X3.4-1968)은 "그래야 한다"고 주장했다.사용 가능한 128개의 위치 중 다른 위치에 배치되었을 가능성이 있는 구두점 문자(":;<=>")로 불필요하게 채워지는 대신 10진수 뒤에 6개의 코드 테이블 위치를 예약했습니다.


Base16(전송 부호화)

Base16(스페이스 없이 적절한 이름으로서)은 Base32, Base58 Base64와 같은 패밀리에 속하는 바이너리-텍스트 부호화를 참조할 수도 있습니다.

이 경우 데이터는 4비트 시퀀스로 분할되며 각 값(0~15 포함)은 ASCII 문자 집합의 16개의 기호를 사용하여 인코딩됩니다.ASCII 문자 집합의 16개의 기호를 사용할 수 있지만 실제로는 16진수 숫자의 표준 표기법에 맞추기 위해 ASCII 숫자 '0'–'9'와 문자 'A'–'F' (또는 소문자 'a'–'f')가 항상 선택됩니다.

Base16 인코딩에는 몇 가지 장점이 있습니다.

  • 대부분의 프로그래밍 언어에는 이미 ASCII 인코딩된 16진수를 구문 분석하는 기능이 있습니다.
  • 4비트는 정확히 반 바이트이므로 각각 Base32와 Base64의 5비트 또는 6비트보다 처리하기가 쉽습니다.
  • 기호 0~9 및 A-F는 16진 표기로 범용하므로 기호 룩업 테이블에 의존하지 않고도 한눈에 쉽게 이해할 수 있습니다.
  • 많은 CPU 아키텍처는 하프바이트(니블이라고도 함)에 액세스 할 수 있는 전용 명령어를 갖추고 있기 때문에 하드웨어에서는 Base32 및 Base64보다 효율이 향상됩니다.

Base16 인코딩의 주요 단점은 다음과 같습니다.

  • 원래 데이터의 각 4비트 값이 8비트 바이트로 인코딩되기 때문에 공간 효율은 50%에 불과합니다.반면 Base32 및 Base64 인코딩은 각각 63%와 75%의 공간 효율을 가집니다.
  • 대문자와 소문자를 모두 수용해야 하는 복잡성이 가중될 수 있음

Base16 인코딩은 현대 컴퓨팅 어디에서나 지원됩니다.이것은 URL 퍼센트 인코딩대한 W3C 표준의 기초가 됩니다.여기서 문자는 퍼센트 기호 "%"와 Base16으로 인코딩된 형식으로 대체됩니다.대부분의 최신 프로그래밍 언어에는 Base16 인코딩된 숫자의 포맷 및 해석 지원이 직접 포함되어 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Knuth, Donald Ervin (1986). The TeXbook. Duane Bibby. Reading, Mass. ISBN 0-201-13447-0. OCLC 12973034.
  2. ^ 스트링"\x1B[0m\x1B[25;1H"는 문자 시퀀스 Esc [ 0 m Esc [ 2 5 ; 1 H Nul ]를 지정합니다.ANSI 단말기에서 사용되는 이스케이프 시퀀스로 문자 세트와 색상을 리셋하고 커서를 줄 25로 이동합니다.
  3. ^ "The Unicode Standard, Version 7" (PDF). Unicode. Archived (PDF) from the original on 2016-03-03. Retrieved 2018-10-28.
  4. ^ "Hexadecimal web colors explained". Archived from the original on 2006-04-22. Retrieved 2006-01-11.
  5. ^ "ISO-8859-1 (ISO Latin 1) Character Encoding". www.ic.unicamp.br. Archived from the original on 2019-06-29. Retrieved 2019-06-26.
  6. ^ "Modula-2 – Vocabulary and representation". Modula −2. Archived from the original on 2015-12-13. Retrieved 2015-11-01.
  7. ^ "An Introduction to VHDL Data Types". FPGA Tutorial. 2020-05-10. Archived from the original on 2020-08-23. Retrieved 2020-08-21.
  8. ^ "*read-base* variable in Common Lisp". CLHS. Archived from the original on 2016-02-03. Retrieved 2015-01-10.
  9. ^ "*print-base* variable in Common Lisp". CLHS. Archived from the original on 2014-12-26. Retrieved 2015-01-10.
  10. ^ MSX 출시 예정 - Part 2: Wayback Machine Compute에서 MSX 아카이브 2010-11-24!, 제56호, 1985년 1월 페이지 52
  11. ^ BBC BASIC 프로그램은 Microsoft BASIC에 완전히 이식할 수 없습니다.Microsoft BASIC 프로그램은 Microsoft BASIC에 (변경 없이)&프리픽스 8진수 값입니다.(Microsoft BASIC은 주로&O8진수 접두사를 붙여서&H는 프리픽스 16진수입니다만, 앰퍼샌드만으로 디폴트 해석은 8진수 프리픽스로서 생성됩니다.
  12. ^ a b c d e f g Savard, John J. G. (2018) [2005]. "Computer Arithmetic". quadibloc. The Early Days of Hexadecimal. Archived from the original on 2018-07-16. Retrieved 2018-07-16.
  13. ^ "2.1.3 Sexadecimal notation". G15D Programmer's Reference Manual (PDF). Los Angeles, CA, USA: Bendix Computer, Division of Bendix Aviation Corporation. p. 4. Archived (PDF) from the original on 2017-06-01. Retrieved 2017-06-01. This base is used because a group of four bits can represent any one of sixteen different numbers (zero to fifteen). By assigning a symbol to each of these combinations we arrive at a notation called sexadecimal (usually hex in conversation because nobody wants to abbreviate sex). The symbols in the sexadecimal language are the ten decimal digits and, on the G-15 typewriter, the letters u, v, w, x, y and z. These are arbitrary markings; other computers may use different alphabet characters for these last six digits.
  14. ^ Gill, S.; Neagher, R. E.; Muller, D. E.; Nash, J. P.; Robertson, J. E.; Shapin, T.; Whesler, D. J. (1956-09-01). Nash, J. P. (ed.). "ILLIAC Programming – A Guide to the Preparation of Problems For Solution by the University of Illinois Digital Computer" (PDF). bitsavers.org (Fourth printing. Revised and corrected ed.). Urbana, Illinois, USA: Digital Computer Laboratory, Graduate College, University of Illinois. pp. 3–2. Archived (PDF) from the original on 2017-05-31. Retrieved 2014-12-18.
  15. ^ ROYAL PRECISION Electronic Computer LGP – 30 PROGRAMMING MANUAL. Port Chester, New York: Royal McBee Corporation. April 1957. Archived from the original on 2017-05-31. Retrieved 2017-05-31. (NB. 이 다소 이상한 시퀀스는 LGP-30의 6비트 문자 코드의 다음 6개의 연속 숫자 키보드 코드에서 나온 것입니다.)
  16. ^ Manthey, Steffen; Leibrandt, Klaus (2002-07-02). "Die PERM und ALGOL" (PDF) (in German). Retrieved 2018-05-19.
  17. ^ NEC Parametron Digital Computer Type NEAC-1103 (PDF). Tokyo, Japan: Nippon Electric Company Ltd. 1960. Cat. No. 3405-C. Archived (PDF) from the original on 2017-05-31. Retrieved 2017-05-31.
  18. ^ a b c Martin, Bruce Alan (October 1968). "Letters to the editor: On binary notation". Communications of the ACM. Associated Universities Inc. 11 (10): 658. doi:10.1145/364096.364107. S2CID 28248410.
  19. ^ Whitaker, R. O. (January 1972). "Letters to the editor: More on man/machine". Datamation. p. 103.
  20. ^ "Archived copy". Archived (PDF) from the original on 2021-10-20. Retrieved 2021-09-15.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  21. ^ a b c Magnuson, Robert A. (January 1968). "A hexadecimal pronunciation guide". Datamation. Vol. 14, no. 1. p. 45.
  22. ^ Babb, Tim (2015). "How to pronounce hexadecimal". Bzarg. Archived from the original on 2020-11-11. Retrieved 2021-01-01.
  23. ^ a b Rogers, S.R. (2007). "Hexadecimal number words". Intuitor. Archived from the original on 2019-09-17. Retrieved 2019-08-26.
  24. ^ Clarke, Arthur; Pohl, Frederik (2008). The Last Theorem. Ballantine. p. 91. ISBN 978-0007289981.
  25. ^ "ISO/IEC 9899:1999 – Programming languages – C". ISO. Iso.org. 2011-12-08. Archived from the original on 2016-10-10. Retrieved 2014-04-08.
  26. ^ "Rationale for International Standard – Programming Languages – C" (PDF). Open Standards. 5.10. April 2003. pp. 52, 153–154, 159. Archived (PDF) from the original on 2016-06-06. Retrieved 2010-10-17.
  27. ^ The IEEE and The Open Group (2013) [2001]. "dprintf, fprintf, printf, snprintf, sprintf – print formatted output". The Open Group Base Specifications (Issue 7, IEEE Std 1003.1, 2013 ed.). Archived from the original on 2016-06-21. Retrieved 2016-06-21.
  28. ^ a b Mano, M. Morris; Ciletti, Michael D. (2013). Digital Design – With an Introduction to the Verilog HDL (Fifth ed.). Pearson Education. pp. 6, 8–10. ISBN 978-0-13-277420-8.
  29. ^ "算盤 Hexadecimal Addition & Subtraction on a Chinese Abacus". totton.idirect.com. Archived from the original on 2019-07-06. Retrieved 2019-06-26.
  30. ^ "Base 4^2 Hexadecimal Symbol Proposal". Hauptmech. Archived from the original on 2021-10-20. Retrieved 2008-09-04.
  31. ^ "Intuitor Hex Headquarters". Intuitor. Archived from the original on 2010-09-04. Retrieved 2018-10-28.
  32. ^ Niemietz, Ricardo Cancho (2003-10-21). "A proposal for addition of the six Hexadecimal digits (A-F) to Unicode". DKUUG Standardizing. Archived from the original on 2011-06-04. Retrieved 2018-10-28.
  33. ^ Nystrom, John William (1862). Project of a New System of Arithmetic, Weight, Measure and Coins: Proposed to be called the Tonal System, with Sixteen to the Base. Philadelphia: Lippincott.
  34. ^ Nystrom(1933), 페이지 33: "나침반 상의 시간, 원의 각도 또는 점을 나타낼 때, 단위 tim은 정수로, 일부는 분수로 표기해야 한다. 5·86 tim은 5회이고 metonby [*"diem and metonby" John Nystrom은 실수로 십진수 이름의 일부를 주기 때문이다; Nystrom 5의 발음 체계에서,, c.f. unifoundry.com Archived 2021-05-19 at the Wayback Machine ].
  35. ^ C. E. Fröberg, 16진수 변환표, Lund(1952)
  36. ^ 1895년의 세기 사전은 16진수를 "16에 대한 관계"라는 더 일반적인 의미로 가지고 있다."기준 16을 사용한다"는 의미에서 16진법의 초기 명시적 사용은 1895년 뉴욕 미국지리학회지(Journal of the American Geographical Society of New York, vol. 27-28, p. 197)에서도 발견된다.
  37. ^ Schwartzman, Steven (1994). The Words of Mathematics: An etymological dictionary of mathematical terms used in English. The Mathematical Association of America. p. 105. ISBN 0-88385-511-9. s.v. 16진수
  38. ^ 크누스, 도널드 (1969년)컴퓨터 프로그래밍의 기술 제2권.ISBN 0-201-03802-1(17장)
  39. ^ 알프레드 B.Taylor, Report on Measures and Measures, Pharmical Association, 제8회 연차총회, 보스턴, 1859년 9월 15일.페이지와 33, 41을 참조하십시오.
  40. ^ 알프레드 B.Taylor, "8진법과 그 도량형 시스템에 대한 적용", Proc Amer. 필. 사회. Vol XXIV, 필라델피아 웨이백 머신에서 보관된 2016-06-24, 1887; 296-366페이지.317페이지와 322페이지를 참조해 주세요.
  41. ^ IBM System/360 FORTRAN IV Language 2021-05-19 Wayback Machine에 보관(1966년), 페이지 13.