以下の解説記事はまだ翻訳されておらず、英語で表示されます。
16進数について
Base 16 is the youngest of the bases in daily use, and it exists because of a hardware decision. Grouping bits in fours lets one written digit stand for exactly four of them, so a byte is two digits and a 16-bit word is four, with no digit ever straddling a byte boundary. Octal did the same job on machines whose word sizes were multiples of three — the PDP-8's 12-bit words, the 36-bit IBM 7090 — and lost ground as the 8-bit byte became standard. Unix file permissions, still written 644 and 755, are an octal survival.
Base 16 had at least one advocate before computers existed. John W. Nystrom, a Swedish-American engineer, published a complete hexadecimal scheme in 1862 as the Tonal System, with invented names for the digits and matching proposals for hexadecimal weights, measures and coinage. It went nowhere.
Early machines disagreed about what to write for the six digits above 9; the Bendix G-15 of 1956 used the lowercase letters u, v, w, x, y and z. The name wobbled as well. "Hexadecimal" is a macaronic word, welding the Greek hexa- for six onto a Latinate -decimal; the consistently Latin "sexadecimal" is the older form, and was still turning up in Bendix documentation in the 1950s. The A-to-F convention everyone inherited established itself as the de facto standard from 1966, in the wake of the Fortran IV manual for the IBM System/360.
Notation itself never converged. C writes 0x1F, and C++, Java, Python, JavaScript, Go and Rust all followed; Motorola assemblers and the Pascal family write $1F; Intel-style assemblers append an h, as in 1Fh; the web writes colours as #1F1F1F. Four bits got a name of their own along the way — a nibble, sometimes spelled nybble, half a byte and exactly one hexadecimal digit.
主な性質
- One hexadecimal digit is exactly four bits, so two digits cover one 8-bit byte: 00 to FF is 0 to 255.
- Converting between hexadecimal and binary is digit-by-digit substitution, with no carrying across digits.
- FFFF is 65,535 and FFFFFFFF is 4,294,967,295 — the largest unsigned 16-bit and 32-bit values.
- An n-bit value needs ceil(n/4) hexadecimal digits, which is why a 24-bit colour is written as six.
- A number is divisible by 15 exactly when its hexadecimal digits sum to a multiple of 15 — casting out nines, rebased.
- 1/d in lowest terms terminates in hexadecimal only when d is a power of two, so 1/3 and 1/5 both recur.
- 2^53 - 1, the largest integer a JavaScript number holds exactly, is 1FFFFFFFFFFFFF in hexadecimal.
- DEADBEEF, the long-standing debugging marker, is the decimal number 3,735,928,559.
登場する場面
- CSS and HTML colours: #FF8000 is one byte each of red, green and blue.
- MAC addresses are 48 bits written as six hex pairs; IPv6 addresses are 128 bits written as eight groups of four hex digits.
- Unicode code points are written as U+ followed by hexadecimal, as in U+1F600.
- File-format magic numbers: a Java class file opens with the four bytes CAFEBABE, and a PNG opens with byte 89 followed by the letters P, N and G.
- Git names commits by their SHA-1 hash printed as 40 hexadecimal digits, usually abbreviated to the first seven.
このジェネレーターの使い方
生成された値は上部に表示され、横にコピーボタンがあります。画像にするには 画像を作成 のスタイルから見た目を選び、書き出しサイズを指定して PNG・JPEG・WebP でダウンロードしてください。すべてブラウザー内で描画されるため、生成した内容がサーバーに送られることはありません。
操作に合わせてアドレスバーが更新されるので、リンクは常に表示どおりの状態を再現します。特定の数列を共有したり、設定を保存しておくのに便利です。値をプレーンテキストで取り出すには コピー、CSV・JSON・NDJSON・SQL・XML が必要なら データを書き出す を使ってください。
出典
- Hexadecimal — Wikipedia — CC BY-SA 4.0
- Nibble — Wikipedia — CC BY-SA 4.0
- IBM System/360 — Wikipedia — CC BY-SA 4.0
- Web colors — Wikipedia — CC BY-SA 4.0
このページの歴史的な記述は、上に挙げたオープンライセンスの資料に基づいています。誤りを見つけたら お知らせください。修正します。