Jump to content

Hexadecimal

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

수학(mathematics)컴퓨팅(computing)에서, 십육진수(hexadecimal) (역시 base-16 또는 hex) 숫자-표시 시스템은 16의 기수 (밑수)를 사용하여 숫자를 나타내는 위치적 숫자 시스템입니다. 10 기호를 사용하여 숫자를 나타내는 십진 시스템과 달리, 십육진수는 16 구별되는 기호를 사용하며, 가장 자주 기호 "0"-"9"는 0에서 9까지의 값을 나타내고 "A"-"F" (또는 대안적으로 "a"-"f")는 10에서 15까지의 값을 나타냅니다.

십육진 숫자 시스템은 컴퓨터 시스템 디자이너와 프로그래머에 의해 광범위하게 사용되는데 왜냐하면 그것들은 이진-코드(binary-coded) 값의 보다 인간-친화적 표현을 제공하기 때문입니다. 각 십육진 비트는 4 비트 (이진 자릿수)를 나타내며, 역시 니블(nibble, 또는 nybble)이라고 알려져 있습니다.[1] 예를 들어, 8-비트 바이트(byte)는 이진 형식에서 00000000에서 11111111까지 범위의 값을 가질 수 있으며, 이는 십육진수에서 00에서 FF까지로 더 편리하게 나타낼 수 있습니다.

수학에서, 아래-첨자는 전형적으로 밑수를 지정하기 위해 사용됩니다. 예를 들어, 십진 값 31,723는 십육진수에서 7BEB16으로 표현될 수 있습니다. 프로그래밍에서, 여러 가지 표기법이 십육진수 표현을 나타내기 위해 사용되며, 보통 접두사를 포함합니다. 접두사 0xC에서 사용되며, 0x7BEB으로 이 값을 나타냅니다.

십육진수는 전송 인코딩 Base16에 사용되며, 여기서 일렉트로닉스(plaintext)의 각 바이트는 두 개의 4-비트 값으로 구분되고 두 개의 16진수에 의해 표시됩니다.

Representation

Written representation

대부분의 현재 사용 경우에서, 문자 A–F 또는 a–f는 값 10–15를 나타내고, 반면 숫자-표시(numerals) 0–9는 그것들의 십진수 값을 나타내기 위해 사용됩니다.

소문자 또는 대문자를 사용하는 보편적인 규칙은 없으므로, 각각은 공동체 표준 또는 규칙에 따라 특정 환경에서 널리 사용되거나 선호됩니다; 심지어 혼합된 경우가 사용합니다. 7-세그먼트 디스플레이는 서로 구별할 수 있는 자릿수를 만들기 위해 혼합된 경우 AbCdEF를 사용합니다.

긴 목록에서 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 6f 70 65 64 69 61  
00000020  20 74 68 61 74 20 61 6e  79 6f 6e 65 20 63 61 6e 
00000030  20 65 64 69 74 0a

Distinguishing from decimal

밑수가 명확하지 않은 상황에서, 십육진수는 모호할 수 있고 다른 밑수로 표현된 숫자와 혼동될 수 있습니다. 값을 명확하게 표현하기 위한 몇 가지 규칙이 있습니다. 숫자 아래-첨자 (자체는 십진수로 작성됨)는 밑수를 명시적으로 제공할 수 있습니다: 15910은 십진수 159입니다; 15916은 34510과 같은 십육진수 159입니다. 일부 저자는 159decimal 및 159hex, 또는 159d 및 159h와 같은 텍스트 아래-첨자를 선호합니다.

도널드 커누스(Donald Knuth)는 그의 저서 The TeXbook에서 특정 기수를 나타내기 위해 특정 서체의 사용을 소개했습니다.[2] 십육진수 표현은 타자기 서체(typewriter typeface): 5A3로 작성됩니다.

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

  • 유닉스 (및 관련된) 쉘, AT&T 어셈블리 언어와 마찬가지로 C 프로그래밍 언어 (및 C++, C#, Go, D, Java, JavaScript, Python, 및 Windows PowerShell과 같은 그것의 구문적 자손)은 16진수로 표현되는 숫자 상수에 대해 접두사 0x를 사용합니다: 0x5A3. 문자와 문자열 상수는 접두사 \x 뒤에 두 개의 16진수가 오는 16진수로 문자 코드를 표현할 수 있습니다: '\x1B'Esc 제어 문자를 나타냅니다;[3] "\x1B[0m\x1B[25;1H"는 2개의 삽입된 Esc 문자를 갖는 11개의 문자를 포함하는 문자열입니다. printf 함수 계열을 갖는 정수를 16진수로 출력하기 위해, 형식 변환 코드 %X 또는 %x가 사용됩니다.
  • URI (URL 포함)에서, 문자 코드(character codes)%로 시작하는 16진수 쌍으로 작성됩니다: http://www.example.com/name%20with%20spaces 여기서 %20공백 문자, 16진수에서 ASCII 코드 점 20, 십진수에서 32에 대한 코드입니다.
  • XMLXHTML에서, 문자는 &#xcode;를 사용하여 16진수 수치적 문자 참조(numeric character references)로 표현될 수 있으며, 예를 들어 ’는 문자 U+2019 (오른쪽 작은 따옴표)를 나타냅니다. 만약 x가 없으면 그 숫자는 십진수입니다 (따라서 ’는 십진수 문자입니다).[4]
  • 유니코드 표준에서, 문자 값은 U+ 다음에 16진수 값으로 표시되며, 예를 들어, U+20AC유로 기호 (€)입니다.
  • HTML에서 색깔 참조(Color references), CSSX 윈도우#접두사가 붙은 6개의 16진수 자릿수 (순서대로 빨간색, 녹색, 파란색에 대해 각각 2자리)로 표현될 수 있습니다: 흰색은, 예를 들어, #FFFFFF로 표시됩니다.[5] CSS는 역시 구성 요소당 하나의 16진수를 갖는 3-십육진수-자릿수 약어를 허용합니다: #FA3는 #FFAA33 (금색 오렌지:     )를 약칭합니다.
  • MIME (전자우편 확장자) 인용-인쇄가능 인코딩에서, 문자 코드는 접두사 =가 붙은 16진수 쌍으로 작성됩니다:Espa=F1a는 "España"입니다 (F1 은 ISO/IEC 8859-1 문자 집합에서 ñ에 대한 코드입니다).[6])
  • 인텔-파생 어셈블리 언어 및 Modula-2에서,[7] 16진수는 접미사 H 또는 h로 표시됩니다: 예를 들어, FFh 또는 05A3H. 일부 구현에서는 첫 번째 자릿수 문자가 십진수 자릿수가 아닐 때, 선행하는 영이 필요하므로 FFh 대신 0FFh를 씁니다. 일부 다른 구현 (예를 들어, NASM)은 C-스타일 숫자 (0x42)를 허용합니다.
  • 다른 어셈블리 언어 (6502, Motorola), Pascal, Delphi, 일부 버전의 BASIC (Commodore), GameMaker Language, Godot, 및 Forth는 접두사로 $를 사용합니다: 예를 들어, $5A3.
  • 일부 어셈블리 언어 (Microchip)는 ABCD16에 대해 표기법 H'ABCD'를 사용합니다. 마찬가지로, Fortran 95는 Z'ABCD'를 사용합니다.
  • AdaVHDL은 기반 "숫자 따옴표"로 십육진수 숫자-표시를 묶습니다: 예를 들어, 16#5A3#. 비트 벡터 상수에 대해, VHDL는 표기법 x"5A3"을 사용합니다.[8]
  • Verilog8'hFF 형식에서 16진수 상수를 나타내며, 여기서 8은 값의 비트 수이고 FF는 16진수 상수입니다.
  • Smalltalk 언어는 접두사 16r를 사용합니다: 예를 들어,16r5A3
  • PostScript본 쉘(Bourne shell)과 그것의 파생물은 접두사16#로 십육진수를 나타냅니다: 예를 들어,16#5A3. PostScript에 대해, 이진 데이터 (예를 들어, 이미지 픽셀)은 접두사가 붙지 않은 십육진수 쌍으로 표현될 수 있습니다: 예를 들어, AA213FD51B3801043FBC...
  • Common Lisp는 접두사 #x#16r를 사용합니다. 변수 *read-base*[9] 및 *print-base*[10]를 16으로 설정하면 Common Lisp 시스템의 판독기와 프린터를 숫자를 읽고 인쇄하기 위한 16진수 표현으로 전환하는 데 사용할 수도 있습니다. 따라서 입력 또는 출력 밑수가 16으로 변경될 때, #x 또는 #16r 접두어 코드 없이 16진수를 나타낼 수 있습니다.
  • MSX BASIC,[11] QuickBASIC, FreeBASIC, 및 Visual Basic은 16진수 숫자로 접두사 &H를 사용합니다: 예를 들어, &H5A3
  • BBC BASICLocomotive BASIC는 16진수에 대해 &를 사용합니다.[12]
  • TI-89 및 92 시리즈는 0h 접두사를 사용합니다: 예를 들어, 0h5A3
  • ALGOL 68는 16진수 숫자를 나타내기 위해 접두사 16r를 사용합니다: 예를 들어,16r5a3. 이진수, 사진수 (밑수-4), 및 팔진수는 유사하게 지정될 수 있습니다.
  • 전통적인 OS (zOS, zVSE, zVM, TPF, IBM i)를 실행하는 IBM 메인프레임 (zSeries), 및 미드레인지 컴퓨터 (IBM i)에서 가장 공통적인 16진수 형식은 X'5A3'이고, 어셈블러, PL/I, COBOL, JCL, 스크립트, 명령어, 및 기타 장소에서 사용됩니다. 이 형식은 다른 (및 지금은 사용되지 않는) IBM 시스템에서도 공통적이었습니다. 때때로 아포스트로피 대신 인용 부호가 사용되었습니다.
  • 임의의 IPv6 주소는 4개의 16진수 자릿수 (hextets라고도 함)로 구성된 8개의 그룹으로 작성될 수 있으며, 여기서 각 그룹은 콜론 (:)으로 구분됩니다. 예를 들어 다음은 유효한 IPv6 주소입니다: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 또는 0을 제거함으로써 축약될 수 있습니다: 2001:db8:85a3::8a2e:370:7334 (IPv4 주소는 보통 십진수로 작성됩니다).
  • Globally unique identifiers는 종종 하이픈으로 구분된 그룹으로 23 십육진수 자릿수로 쓰입니다: 예를 들어, 3F2504E0-4F89-41D3-9A0C-0305E82C3301.

Other symbols for 10–15 and mostly different symbol sets

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

  • 1950년대 동안, Bendix-14와 같은 일부 설치에서는 10–15 값을 0, 1, 2, 3, 4, 및 5로 표시하기 위해 윗줄과 함께 숫자 0에서 5까지를 사용하는 것을 선호했습니다.
  • SWAC (1950)[13]Bendix G-15 (1956)[14][13] 컴퓨터는 10에서 15 값에 대해 소문자 u, v, w, x, y, 및 z를 사용했습니다.
  • ORDVACILLIAC I (1952) 컴퓨터 (및 일부 파생된 디자인, 예를 들어, BRLESC)는 10에서 15 값에 대해 대문자 K, S, N, J, F, 및 L을 사용했습니다.[15][13]
  • Librascope LGP-30 (1956)는 10에서 15 값에 대해 문자 F, G, J, K, Q, 및 W를 사용했습니다.[16][13]
  • PERM (1956) 컴퓨터에서, 십육진수 숫자는 영에 대해 문자 O, 1에서 15에 대해 A에서 NP를 썼었습니다. 많은 기계 명령어에는 기억법 16진수 코드 (A=더하기, M=곱하기, L=로드, F=고정-점 등)가 있었습니다; 프로그램은 명령어 이름 없이 작성되었습니다.[17]
  • Honeywell Datamatic D-1000 (1957)는 10에서 15 값에 대해 소문자 b, c, d, e, f, 및 g를 사용했고, 반면에 Elbit 100 (1967)는 대문자 B, C, D, E, F, 및 G를 사용했습니다.[13]
  • Monrobot XI (1960)는 10에서 15 값에 대해 문자 S, T, U, V, W, 및 X를 사용했습니다.[13]
  • NEC parametron 컴퓨터 NEAC 1103 (1960)는 10에서 15 값에 대해 문자 D, G, H, J, K (및 아마도 V)를 사용했습니다.[18]
  • Pacific Data Systems 1020 (1964)는 10에서 15 값에 대해 문자 L, C, A, S, M, 및 D를 사용했습니다.[13]
Bruce Alan Martin's hexadecimal notation proposal[19]
  • Brookhaven National Laboratory의 Bruce Alan Martin은 A–F의 선택이 "어리석다"고 생각했습니다. 1968년 CACM 편집자에게 보낸 편지에서, 그는 비트 위치에 기반한 완전히 새로운 기호 집합을 제안했습니다.[19]
Bibi-binary
Ronald O. Whitaker's hexadecimal notation proposal.[20][21]
  • 1972년 Rowco Engineering Co.의 Ronald O. Whitaker는 "인코딩 행렬에 관계 없이 컴퓨터로부터 입력과 출력을 모두 허용"하기 위해 "직접 이진 읽기"를 허용하는 삼각형 글꼴을 제안했습니다.[20][21]
  • 일부 7-세그먼트 디스플레이 디코더 칩 (예를 들어, 74LS47)은 0–9를 올바르게 생성하도록 설계된 로직으로 인해 예기치 않은 출력을 보여줍니다.[22]

Verbal and digital representations

10에서 15까지의 수량을 나타내기 위한 전통적인 숫자가 없었기 때문에, 알파벳 문자가 대체 문자로 다시 사용되었습니다. 대부분의 유럽 언어에는 11에서 15까지의 일부 숫자-표시에 대한 비-십진수-기반 단어가 부족합니다. 어떤 사람들은 전화 번호와 같은 16진수를 자릿수-별로 읽거나, NATO 음성 알파벳, 합동 육군/해군 음성 알파벳, 또는 이와 유사한 에드-혹(ad-hoc) 시스템을 사용하여 읽습니다. IBM System/360 프로그래머들 사이에서 16진수가 채택된 후 Magnuson (1968)은 16진수 문자에 짧은 이름을 부여하는 발음 가이드를 제안했습니다[23] – 예를 들어, "A"는 "ann"으로 발음했고, B "bet", C "chris", 등.[23] 또 다른 이름 지정 시스템은 실리콘 밸리의 농담을 기반으로 Babb (2015)에 의해 정교화되었습니다.[24] Rogers (2007)는 실제 숫자에 숫자 A–F가 포함되지 않은 경우에도 어떤 경우에도 구두 표현을 구별할 수 있도록 시도하는 또 다른 이름 지정 시스템을 온라인에 게시했습니다.[25] 예는 아래 표에 나열되어 있습니다.

다른 사람들은 "0000"은 "dit-dit-dit-dit" (....)로 발음되고, dah-dit-dit-dah (-..-)는 9의 값을 갖는 자릿수를 발음하고, "dah-dah-dah-dah" (----)는 십진수 15에 대한 16진수 자릿수를 발음하도록 "dit"와 "dah"가 각각 0과 1을 나타내는 4-비트 16진수 자릿수를 표현하기 위해 구두 모스 부호 규칙을 사용할 것을 제안해 왔습니다.

Hexadecimal finger-counting scheme

자릿수를 세는 시스템은 2진수와 16진수 모두에 대해 고안되어 왔습니다. Arthur C. Clarke는 각 손가락을 켜기/끄기 비트로 사용하여, 10개 손가락에서 0부터 102310까지 손가락을 세도록 제안했습니다.[26] FF16 (25510)까지 세는 또 다른 시스템이 오른쪽에 나와 있습니다.

Magnuson (1968)[23]
naming method
Number Pronunciation
A ann
B bet
C chris
D dot
E ernest
F frost
1A annteen
A0 annty
5B fifty-bet
A01C annty christeen
1AD0 annteen dotty
3A7D thirty-ann seventy-dot
Rogers (2007)[25]
naming method
Number Pronunciation
A ten
B eleven
C twelve
D draze
E eptwin
F fim
10 tex
11 oneteek
1F fimteek
50 fiftek
C0 twelftek
100 hundrek
1000 thousek
3E thirtek-eptwin
E1 eptek-one
C4A twelve-hundrek-fourtek-ten
1743 one-thousek-seven-
-hundrek-fourtek-three

Signs

십육진수 시스템은 십진수와 같은 방식으로 음수를 표현할 수 있습니다: −2A는 −4210을 나타내는 식입니다.

십육진수는 역시 프로세서(processor)에서 사용되는 정확한 비트 패턴을 표현하기 위해 사용될 수 있으므로, 일련의 십육진수 자릿수는 부호화된 값 또는 심지어 부동-점 값을 나타낼 수 있습니다. 이런 방법으로, 음수 −4210은 32-비트 CPU 레지스터 (2의 보수)에서 FFFF FFD6으로, 32비트 FPU 레지스터에서 C228 0000으로, 또는 (IEEE 부동-점 표준에서) 64-비트 FPU 레지스터에서 C045 0000 0000 0000으로 쓸 수 있습니다.

Hexadecimal exponential notation

십진수를 지수 표기법으로 나타낼 수 있는 것처럼, 십육진수도 마찬가지입니다. P 표기법은 문자 P (또는 "거듭제곱"에 대해, p)를 사용하는 반면 E (또는 e)는 십진수 E 표기법에서 유사한 용도로 사용됩니다. P 뒤의 숫자는 십진수이고 이진 지수를 나타냅니다. 지수를 1씩 늘리면 16이 아니라 2를 곱합니다: 20p0 = 10p1 = 8p2 = 4p3 = 2p4 = 1.0p5. 보통, 숫자는 16진수 자릿수가 1로 시작하도록 정규화됩니다. (영은 보통 P가 없는 0입니다.)

예제: 1.3DEp421.3DE16 × 24210를 나타냅니다.

P 표기법은 IEEE 754-2008 이진 부동-점 표준에 필요하고, C 프로그래밍 언어C99 판에서 부동-점 리터럴에 사용될 수 있습니다.[27] %a 또는 %A 변환 지정자를 사용하여, 이 표기법은 C99 사양[28]단일 유닉스 사양 (IEEE Std 1003.1) POSIX 표준을 따르는 함수의 printf 가족의 구현으로 생성될 수 있습니다.[29]

Conversion

Binary conversion

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

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

그러므로:

11112 = 810 + 410 + 210 + 110
  = 1510

약간의 연습과 함께, 한 단계에서 11112를 F16에 매핑하는 것이 쉬워집니다: 쓰기 표시(written representation)의 테이블을 참조하십시오. 십진수보다 십육진수를 사용하는 이점은 숫자의 크기에 따라 빠르게 증가합니다. 숫자가 커지면, 십진수로 변환하는 것이 매우 지루합니다. 어쨌든, 십육진수로 매핑할 때, 이진 문자열을 4-자릿수 그룹으로 고려하고 각각을 단일 십육진수로 매핑하는 것은 간단합니다.[30]

이 예제는 이진수를 십진수로 변환하고, 각 자릿수를 십진수 값에 매핑하고, 결과를 더하는 것을 보여줍니다.

(01011110101101010010)2 = 26214410 + 6553610 + 3276810 + 1638410 + 819210 + 204810 + 51210 + 25610 + 6410 + 1610 + 210
  = 38792210

이것을 십육진수로의 변환과 비교해 보십시오. 여기서 4 자릿수의 각 그룹은 독립적으로 고려되고 직접 변환될 수 있습니다:

(01011110101101010010)2 = 0101  1110  1011  0101  00102
  = 5 E B 5 216
  = 5EB5216

십육진수에서 이진수로의 변환도 마찬가지로 직접적입니다.[30]

Other simple conversions

비록 사진수 (밑수 4)는 거의 사용되지 않지만, 십육진수 또는 이진수로 쉽게 변환될 수 있습니다. 각 십육진수 자릿수는 한 쌍의 사진수 자릿수에 해당하고 각 사진수 자릿수는 한 쌍의 이진수 자릿수에 해당합니다. 위의 예제에서 5 E B 5 216 = 11 32 23 11 024입니다.

팔진수 (밑수 8) 시스템도 상대적으로 쉽게 변환될 수 있지만, 밑수 2와 밑수 4만큼 간단하지는 않습니다. 각 팔진수 자릿수는 4개가 아닌 3개의 이진수 자릿수에 해당합니다. 그러므로, 이진수로의 중간 변환을 통해 팔진수와 십육진수 사이를 변환한 다음 이진수를 3개 또는 4개의 그룹으로 다시 그룹화할 수 있습니다.

Division-remainder in source base

모든 밑수와 마찬가지로, 원래 밑수에서 정수 나눗셈과 나머지 연산을 수행함으로써 숫자의 표현을 십육진수로 변환하는 간단한 알고리듬이 있습니다. 이론적으로, 이것은 임의의 밑수에서 가능하지만, 대부분의 인간에게는 십진수만, 대부분의 컴퓨터에서는 이진수 (훨씬 더 효율적인 방법으로 변환할 수 있음)만 이 방법으로 쉽게 처리될 수 있습니다.

d를 십육진수로 표현하는 숫자라고 놓고 hihi−1...h2h1 수열을 숫자를 나타내는 십육진수 자릿수라고 놓습니다.

  1. i ← 1
  2. hi ← d mod 16
  3. d ← (d − hi) / 16
  4. If d = 0 (return series hi) else increment i and go to step 2

"16"은 원하는 다른 밑수로 대체될 수 있습니다.

다음은 문자열 표현에서 임의의 숫자를 십육진수로 변환하기 위한 위 알고리듬의 자바스크립트(JavaScript) 구현입니다. 그 목적은 위의 알고리듬을 설명하는 것입니다. 어쨌든, 데이터를 진지하게 다루려면, 비트-별 연산자(bitwise operators)를 사용하는 것이 훨씬 더 좋습니다.

function toHex(d) {
  var r = d % 16;
  if (d - r == 0) {
    return toChar(r);
  }
  return toHex((d - r) / 16) + toChar(r);
}

function toChar(n) {
  const alpha = "0123456789ABCDEF";
  return alpha.charAt(n);
}

Conversion through addition and multiplication

A hexadecimal multiplication table

최종 표현을 얻기 위해 곱셈과 덧셈을 수행하기 전에 원래 밑수에서 각 자리에 자릿값의 십육진수 표현을 할당함으로써 변환하는 것도 가능합니다. 예를 들어, 숫자 B3AD를 십진수로 변환하려면, 십육진수를 그것의 자릿수: B (1110), 3 (310), A (1010), 및 D (1310)로 나누고, 그런-다음 각 십진수 표현에 16p를 곱하여 최종 결과를 얻습니다 (p는 0부터 시작하여 오른쪽에서 왼쪽으로 세는 해당 십육진수 자릿수 위치입니다). 이 경우에서, 다음을 가집니다:

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

이는 밑수 10에서 45997입니다.

Tools for conversion

많은 컴퓨터 시스템은 종종 십육진수를 포함하여 다양한 밑수 사이의 변환을 수행할 수 있는 계산기 유틸리티를 제공합니다.

Microsoft Windows에서, 계산기 유틸리티는 프로그래머에 의해 가장 공통적으로 사용되는 기수 16 (16진수), 10 (10진수), 8 (8진수), 및 2 (2진수) 사이의 변환을 허용하는 프로그래머 모드로 설정될 수 있습니다. 프로그래머 모드에서, 온-스크린 숫자-표시 키패드에는 "Hex"가 선택되었을 때 활성화되는 A부터 F까지의 16진수 숫자가 포함됩니다. 어쨌든, 16진수 모드에서, 윈도우 계산기는 정수만 지원합니다.

Elementary arithmetic

덧셈, 뺄셈, 곱셈, 및 나눗셈과 같은 기본 연산은 공통적으로-사용되는 십진 시스템 또는 각 십육진수 자릿수가 4개의 이진수 자릿수에 해당하는 이진법과 같은 대체 숫자-표시 시스템(numeral system)으로의 변환을 통해 간접적으로 수행될 수 있습니다.

대안적으로, 십육진수 시스템 자체 내에서 기본 연산을 직접 수행할 수도 있습니다. 덧셈/곱셈 테이블과 긴 나눗셈(long division) 및 전통적인 뺄셈 알고리듬과 같은 대응하는 표준 알고리듬에 의존합니다.

Real numbers

Rational numbers

다른 숫자-표시 시스템과 마찬가지로, 십육진수 시스템은 유리수를 나타내기 위해 사용될 수 있지만, 16 (1016)은 단일 소수 인수: 2만 가지기 때문에 반복 전개(repeating expansions)가 공통적입니다.

임의의 밑수에서, 0.1 (또는 "1/10")은 항상 자체 숫자 시스템에서 해당 밑수 값의 표현으로 1을 나눈 것과 같습니다. 따라서, 이진법에서 1을 2로 나누든 십육진법에서 1을 16으로 나누든 이들 두 분수는 모두 0.1로 씁니다. 기수 16은 완전 제곱 (42이기 때문에, 십육진수에서 표현된 분수는 십진수보다 훨씬 더 홀수 주기를 가지고, 순환 숫자(cyclic numbers) (자명한 한 자릿수 숫자 제외)가 없습니다. 반복되는 숫자는 가장 낮은 항에서 분모가 기수에서 찾을 수 없는 소수 인수(prime factor)를 가질 때 표시됩니다; 따라서, 십육진수 표기법을 사용할 때, 분모가 2의 거듭제곱이 아닌 모든 분수는 반복되는 자릿수의 무한한 문자열 (예를 들어 1/3과 1/5)이 됩니다. 이로 인해 십육진수 (및 이진수)는 유리수를 나타내는 데 십진수보다 덜 편리한데 왜냐하면 더 큰 비율이 유한 표현 범위 밖에 있기 때문입니다.

십육진수에서 유한하게 표현할 수 있는 모든 유리수는 역시 십진수, 십이진수, 및 육십진수로도 유한하게 표현할 수 있습니다: 즉, 자릿수가 유한한 십육진수는 그것들의 다른 밑수에서 표현될 때 유한 자릿수를 가집니다. 반대로, 후자의 밑수에서 유한하게 표현할 수 있는 것의 일부만이 십육진수로 유한하게 표현할 수 있습니다. 예를 들어, 십진수 0.1은 십육진수에서 무한 반복 표현 0.19 에 해당합니다. 어쨌든, 십육진수는 분모에 2의 거듭제곱을 갖는 분수를 나타내는 데 십이진법 및 육십진법보다 더 효율적입니다. 예를 들어, 0.062510 (1/16)은 0.116, 0.0912, 및 0;3,4560과 동등합니다.

n Decimal
Prime factors of: base, b = 10: 2, 5;
b − 1 = 9: 3
Hexadecimal
Prime factors of: base, b = 1610 = 10: 2; b − 1 = 1510 = F: 3, 5
Reciprocal Prime factors Positional representation
(decimal)
Positional representation
(hexadecimal)
Prime factors Reciprocal
2 1/2 2 0.5 0.8 2 1/2
3 1/3 3 0.3333... = 0.3 0.5555... = 0.5 3 1/3
4 1/4 2 0.25 0.4 2 1/4
5 1/5 5 0.2 0.3 5 1/5
6 1/6 2, 3 0.16 0.2A 2, 3 1/6
7 1/7 7 0.142857 0.249 7 1/7
8 1/8 2 0.125 0.2 2 1/8
9 1/9 3 0.1 0.1C7 3 1/9
10 1/10 2, 5 0.1 0.19 2, 5 1/A
11 1/11 11 0.09 0.1745D B 1/B
12 1/12 2, 3 0.083 0.15 2, 3 1/C
13 1/13 13 0.076923 0.13B D 1/D
14 1/14 2, 7 0.0714285 0.1249 2, 7 1/E
15 1/15 3, 5 0.06 0.1 3, 5 1/F
16 1/16 2 0.0625 0.1 2 1/10
17 1/17 17 0.0588235294117647 0.0F 11 1/11
18 1/18 2, 3 0.05 0.0E38 2, 3 1/12
19 1/19 19 0.052631578947368421 0.0D79435E5 13 1/13
20 1/20 2, 5 0.05 0.0C 2, 5 1/14
21 1/21 3, 7 0.047619 0.0C3 3, 7 1/15
22 1/22 2, 11 0.045 0.0BA2E8 2, B 1/16
23 1/23 23 0.0434782608695652173913 0.0B21642C859 17 1/17
24 1/24 2, 3 0.0416 0.0A 2, 3 1/18
25 1/25 5 0.04 0.0A3D7 5 1/19
26 1/26 2, 13 0.0384615 0.09D8 2, D 1/1A
27 1/27 3 0.037 0.097B425ED 3 1/1B
28 1/28 2, 7 0.03571428 0.0924 2, 7 1/1C
29 1/29 29 0.0344827586206896551724137931 0.08D3DCB 1D 1/1D
30 1/30 2, 3, 5 0.03 0.08 2, 3, 5 1/1E
31 1/31 31 0.032258064516129 0.08421 1F 1/1F
32 1/32 2 0.03125 0.08 2 1/20
33 1/33 3, 11 0.03 0.07C1F 3, B 1/21
34 1/34 2, 17 0.02941176470588235 0.078 2, 11 1/22
35 1/35 5, 7 0.0285714 0.075 5, 7 1/23
36 1/36 2, 3 0.027 0.071C 2, 3 1/24

Irrational numbers

아래 테이블은 십진수와 십육진수에서 몇 가지 공통적인 무리수의 전개를 제공합니다.

Number Positional representation
Decimal Hexadecimal
2 (the length of the diagonal of a unit square) 1.414213562373095048... 1.6A09E667F3BCD...
3 (the length of the diagonal of a unit cube) 1.732050807568877293... 1.BB67AE8584CAA...
5 (the length of the diagonal of a 1×2 rectangle) 2.236067977499789696... 2.3C6EF372FE95...
φ (phi, the golden ratio = (1+5)/2) 1.618033988749894848... 1.9E3779B97F4A...
π (pi, the ratio of circumference to diameter of a circle) 3.141592653589793238462643
383279502884197169399375105...
3.243F6A8885A308D313198A2E0
3707344A4093822299F31D008...
e (the base of the natural logarithm) 2.718281828459045235... 2.B7E151628AED2A6B...
τ (the Thue–Morse constant) 0.412454033640107597... 0.6996 9669 9669 6996...
γ (the limiting difference between the harmonic series and the natural logarithm) 0.577215664901532860... 0.93C467E37DB0C7A4D1B...

Powers

2의 거듭제곱은 16진수로 매우 간단하게 전개됩니다. 2의 처음 16 거듭제곱은 다음과 같습니다.

2x Value Value (Decimal)
20 1 1
21 2 2
22 4 4
23 8 8
24 10hex 16dec
25 20hex 32dec
26 40hex 64dec
27 80hex 128dec
28 100hex 256dec
29 200hex 512dec
2A (210dec) 400hex 1024dec
2B (211dec) 800hex 2048dec
2C (212dec) 1000hex 4096dec
2D (213dec) 2000hex 8192dec
2E (214dec) 4000hex 16,384dec
2F (215dec) 8000hex 32,768dec
210 (216dec) 10000hex 65,536dec

Cultural history

전통적인 중국의 측정 단위는 밑수-16였습니다. 예를 들어, 오래된 시스템에서 1 jīn (斤)은 16 taels과 같습니다. 수안판(suanpan, 중국 주판)은 덧셈과 뺄셈과 같은 십육진수 계산을 수행하기 위해 사용될 수 있습니다.[31]

십이진수(duodecimal) 시스템과 마찬가지로, 십육진수를 선호하는 숫자-표시 시스템으로 홍보하려는 시도가 가끔 있었습니다. 이들 시도는 종종 개별 숫자-표시에 대한 특정 발음과 기호를 제안합니다.[32] 일부 제안은 표준 척도를 통합하여 16의 배수가 되도록 합니다.[33][34] 그러한 초기 제안은 John W. Nystrom에 의해 1862년에 출판된 Project of a New System of Arithmetic, Weight, Measure and Coins: Proposed to be called the Tonal System, with Sixteen to the Base에서 제시되었습니다.[35] Nystrom은 무엇보다도 하루를 16으로 나누는 16진수 시간을 제안하여, 하루가 16 "시간" (또는 "10 tims", tontim 발음됨)이 되도록 했습니다.[36]

단어 hexadecimal은 1952년에 처음 기록되었습니다.[37] 그것은 그리스어 ἕξ (hex) "six"와 라틴계 -decimal를 결합한 의미에서 마카로닉(macaronic)입니다. 모든-라틴 대안적인 sexadecimal (밑수 60진수에 대한 단어 sexagesimal와 비교)는 더 오래되었고, 적어도 19세기 후반부터 가끔 사용됩니다.[38] 그것은 1950년대 Bendix 문서에서 여전히 사용되고 있습니다. Schwartzman (1994)은 sexadecimalsex에 대한 암시적인 약어 때문에 사용을 피했을 수 있다고 주장합니다.[39] 1960년대 이후로 많은 서구 언어는 hexadecimal에 해당하는 용어를 채택해 왔지만 (예를 들어, 프랑스어 hexadécimal, 이탈리아어 esadecimale, 루마니아어 hexazecimal, 세르비아어 хексадецимални, 등), 다른 언어에서는 "sixteen"을 기본 단어로 대체하는 용어를 도입했습니다 (예를 들어, 그리스어 δεκαεξαδικός, 아이슬란드어 sextándakerfi, 러시아어 шестнадцатеричной, 등.)

용어와 표기법은 1960년대 말까지 정착되지 않았습니다. 1969년 Donald Knuth는 어원적으로 올바른 용어는 binary, ternaryquaternary 등을 모델로 한 "16으로 그룹화"를 전달하기 위한 라틴어 용어, senidenary 또는 sedenary일 것이라고 주장했습니다. Knuth의 주장에 따르면, decimaloctal 산술에 대한 올바른 용어는 각각 denaryoctonary가 될 것입니다.[40] Alfred B. Taylor는 1800년대 중반 대안적인 숫자 밑수에 대한 연구에서 senidenary를 사용했지만, 그는 "자릿수의 불편한 숫자" 때문에 밑수 16을 거부했습니다.[41][42]

A에서 F까지의 문자를 사용하는 현재의 표기법은 IBM System/360에 대한 Fortran IV 매뉴얼이 출판된 후인 1966년부터 사실상의 표준으로 확립되었으며, 이는 (이전 Fortran 변형과 달리) 16진수 상수를 입력하기 위한 표준을 인식합니다.[43] 위에서 언급한 바와 같이 NEC (1960) 및 The Pacific Data Systems 1020 (1964)에서는 대안적인 표기법을 사용했습니다. IBM이 채택한 표준은 1968년 Bruce Alan Martin이 CACM 편집자에게 보내는 편지에서 다음과 같이 불평하면서 널리 채택된 것으로 보입니다:

10진수 (또는 변수 이름)와 8진수 (또는 16진수)를 구별하는 이전의 문제에 더하여 16진수 기호로 문자 A, B, C, D, E, F를 우스꽝스럽게 선택하면, 우리의 숫자 기호를 재고할 시간이 너무 많이 듭니다. 이것은 잘못된 선택이 사실상의 표준이 되기 전에 이루어져야 했습니다!

Martin의 주장은 비-십진수 숫자에서 0에서 9까지의 숫자-표시를 사용하는 것은 "우리에게 밑수-10 위치-값 체계를 암시한다"는 것입니다: "8진수 또는 16진수에 필요한 7 또는 15 비-영 자릿수에 대해 완전히 새로운 기호 (및 이름)를 사용하지 않는 이유는 무엇입니까? A에서 P까지의 문자를 사용하는 것만으로도 개선될 수 있지만, 완전히 새로운 기호는 시스템의 이진 본성을 반영할 수 있습니다."[19] 그는 역시 "수치적 자릿수에 알파벳 문자를 재사용하는 것은 16세기 전에 숫자에 대한 고유한 비-알파벳 글리프의 발명에서 거대한 후퇴를 나타냅니다" (브라흐미 숫자-표시로, 및 나중에 힌두-아라비아 숫자-표시 시스템에서), 그리고 최근의 ASCII 표준 (ASA X3.4-1963 및 USAS X3.4-1968)은 "구두점 문자로 불필요하게 채우지 않고 열 개의 십진 자릿수 다음에 6개의 코드 테이블 위치를 보존해야 했습니다" (":;< =>?")는 128개의 사용 가능한 위치 중 다른 위치에 배치되었을 수 있습니다.

Base16 (transfer encoding)

Base16 (공백 없이 적절한 이름으로)은 Base32, Base58, 및 Base64와 같은 가족에 속하는 텍스트 인코딩에 대한 바이너리를 참조할 수도 있습니다.

이 경우에서, 데이터는 4비트 순서열로 나뉘고, 각 값 (0에서 15 사이)은 ASCII 문자 집합에서 16개 기호 중 하나를 사용하여 인코딩됩니다. 비록 ASCII 문자 집합에서 임의의 16개 기호가 사용될 수 있지만, 실제로는 ASCII 자릿수 '0'–'9' 및 문자 'A'–'F' (또는 소문자 'a'–'f')가 16진수에 대한 표준 표기법에 맞추기 위해 항상 선택됩니다.

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

  • 대부분의 프로그래밍 언어에는 이미 ASCII-인코딩된 16진수를 구문 분석할 수 있는 기능이 있습니다.
  • 정확히 0.5바이트인, 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으로 인코딩된 숫자의 형식 지정 및 구문 분석에 대한 지원이 직접 포함됩니다.

See also

References

  1. ^ "The hexadecimal system". Ionos Digital Guide. Retrieved 2022-08-26.
  2. ^ Knuth, Donald Ervin (1986). The TeXbook. Duane Bibby. Reading, Mass. ISBN 0-201-13447-0. OCLC 12973034.{{cite book}}: CS1 maint: location missing publisher (link)
  3. ^ The string "\x1B[0m\x1B[25;1H" specifies the character sequence Esc [ 0 m Esc [ 2 5 ; 1 H Nul. These are the escape sequences used on an ANSI terminal that reset the character set and color, and then move the cursor to line 25.
  4. ^ "The Unicode Standard, Version 7" (PDF). Unicode. Archived (PDF) from the original on 2016-03-03. Retrieved 28 October 2018.
  5. ^ "Hexadecimal web colors explained". Archived from the original on 2006-04-22. Retrieved 2006-01-11.
  6. ^ "ISO-8859-1 (ISO Latin 1) Character Encoding". www.ic.unicamp.br. Archived from the original on 2019-06-29. Retrieved 2019-06-26.
  7. ^ "Modula-2 – Vocabulary and representation". Modula −2. Archived from the original on 2015-12-13. Retrieved 1 November 2015.
  8. ^ "An Introduction to VHDL Data Types". FPGA Tutorial. 10 May 2020. Archived from the original on 2020-08-23. Retrieved 2020-08-21.
  9. ^ "*read-base* variable in Common Lisp". CLHS. Archived from the original on 2016-02-03. Retrieved 2015-01-10.
  10. ^ "*print-base* variable in Common Lisp". CLHS. Archived from the original on 2014-12-26. Retrieved 2015-01-10.
  11. ^ MSX is Coming — Part 2: Inside MSX Archived 2010-11-24 at the Wayback Machine Compute!, issue 56, January 1985, p. 52
  12. ^ BBC BASIC programs are not fully portable to Microsoft BASIC (without modification) since the latter takes & to prefix octal values. (Microsoft BASIC primarily uses &O to prefix octal, and it uses &H to prefix hexadecimal, but the ampersand alone yields a default interpretation as an octal prefix.
  13. ^ 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.
  14. ^ "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.
  15. ^ 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.
  16. ^ 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. This somewhat odd sequence was from the next six sequential numeric keyboard codes in the LGP-30's 6-bit character code.)
  17. ^ Manthey, Steffen; Leibrandt, Klaus (2002-07-02). "Die PERM und ALGOL" (PDF) (in German). Retrieved 2018-05-19.
  18. ^ 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.
  19. ^ a b c Martin, Bruce Alan (October 1968). "Letters to the editor: On binary notation". Communications of the ACM. 11 (10). Associated Universities Inc.: 658. doi:10.1145/364096.364107. S2CID 28248410.
  20. ^ a b Whitaker, Ronald O. (January 1972). Written at Indianapolis, Indiana, USA. "More on man/machine" (PDF). Letters. Datamation. Vol. 18, no. 1. Barrington, Illinois, USA: Technical Publishing Company. p. 103. Archived (PDF) from the original on 2022-12-05. Retrieved 2022-12-24. (1 page)
  21. ^ a b Whitaker, Ronald O. (1976-08-10) [1975-02-24]. "Combined display and range selector for use with digital instruments employing the binary numbering system" (PDF). Indianapolis, Indiana, USA. US Patent 3974444A. Archived (PDF) from the original on 2022-12-24. Retrieved 2022-12-24. (7 pages)
  22. ^ "SN5446A, '47A, '48, SN54LS47, 'LS48, 'LS49, SN7446A, '47A, '48, SN74LS47, 'LS48, 'LS49 BCD-to-Seven-Segment Decoders/Drivers". Dallas, Texas, USA: Texas Instruments Incorporated. March 1988 [1974]. SDLS111. Archived (PDF) from the original on 2021-10-20. Retrieved 2021-09-15. (29 pages)
  23. ^ a b c Magnuson, Robert A. (January 1968). "A hexadecimal pronunciation guide". Datamation. Vol. 14, no. 1. p. 45.
  24. ^ Babb, Tim (2015). "How to pronounce hexadecimal". Bzarg. Archived from the original on 2020-11-11. Retrieved 2021-01-01.
  25. ^ a b Rogers, S.R. (2007). "Hexadecimal number words". Intuitor. Archived from the original on 2019-09-17. Retrieved 2019-08-26.
  26. ^ Clarke, Arthur; Pohl, Frederik (2008). The Last Theorem. Ballantine. p. 91. ISBN 978-0007289981.
  27. ^ "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.
  28. ^ "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.
  29. ^ 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.
  30. ^ 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.
  31. ^ "算盤 Hexadecimal Addition & Subtraction on a Chinese Abacus". totton.idirect.com. Archived from the original on 2019-07-06. Retrieved 2019-06-26.
  32. ^ "Base 4^2 Hexadecimal Symbol Proposal". Hauptmech. Archived from the original on 2021-10-20. Retrieved 2008-09-04.
  33. ^ "Intuitor Hex Headquarters". Intuitor. Archived from the original on 2010-09-04. Retrieved 28 October 2018.
  34. ^ Niemietz, Ricardo Cancho (21 October 2003). "A proposal for addition of the six Hexadecimal digits (A-F) to Unicode". DKUUG Standardizing. Archived from the original on 2011-06-04. Retrieved 28 October 2018.
  35. ^ 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.
  36. ^ Nystrom (1862), p. 33: "In expressing time, angle of a circle, or points on the compass, the unit tim should be noted as integer, and parts thereof as tonal fractions, as 5·86 tims is five times and metonby [*"sutim and metonby" John Nystrom accidentally gives part of the number in decimal names; in Nystrom's pronunciation scheme, 5=su, 8=me, 6=by, c.f. unifoundry.com Archived 2021-05-19 at the Wayback Machine ]."
  37. ^ C. E. Fröberg, Hexadecimal Conversion Tables, Lund (1952).
  38. ^ The Century Dictionary of 1895 has sexadecimal in the more general sense of "relating to sixteen". An early explicit use of sexadecimal in the sense of "using base 16" is found also in 1895, in the Journal of the American Geographical Society of New York, vols. 27–28, p. 197.
  39. ^ 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. hexadecimal
  40. ^ Knuth, Donald. (1969). The Art of Computer Programming, Volume 2. ISBN 0-201-03802-1. (Chapter 17.)
  41. ^ Alfred B. Taylor, Report on Weights and Measures, Pharmaceutical Association, 8th Annual Session, Boston, 15 September 1859. See pages and 33 and 41.
  42. ^ Alfred B. Taylor, "Octonary numeration and its application to a system of weights and measures", Proc Amer. Phil. Soc. Vol XXIV Archived 2016-06-24 at the Wayback Machine, Philadelphia, 1887; pages 296–366. See pages 317 and 322.
  43. ^ IBM System/360 FORTRAN IV Language Archived 2021-05-19 at the Wayback Machine (1966), p. 13.