59 lines
No EOL
18 KiB
HTML
59 lines
No EOL
18 KiB
HTML
<!DOCTYPE html><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><meta content="width=device-width, initial-scale=1" name="viewport" /><!--replace-start-0--><!--replace-start-5--><!--replace-start-8--><title>Hexadecimal number system - My Zettelkasten</title><!--replace-end-8--><!--replace-end-5--><!--replace-end-0--><link href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.8.7/dist/semantic.min.css" rel="stylesheet" /><link href="https://fonts.googleapis.com/css?family=Merriweather|Libre+Franklin|Roboto+Mono&display=swap" rel="stylesheet" /><!--replace-start-1--><!--replace-start-4--><!--replace-start-7--><link href="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" rel="icon" /><meta content="Hexadecimal is the other main number system used in computing. It works in tandem with the binary number system and provides an easier and more accessible means of working with long sequences of binary numbers." name="description" /><meta content="Hexadecimal number system" property="og:title" /><meta content="My Zettelkasten" property="og:site_name" /><meta content="article" property="og:type" /><meta content="Hexadecimal_number_system" property="neuron:zettel-id" /><meta content="Hexadecimal_number_system" property="neuron:zettel-slug" /><meta content="computer-architecture" property="neuron:zettel-tag" /><meta content="number-systems" property="neuron:zettel-tag" /><script type="application/ld+json">[]</script><style type="text/css">body{background-color:#eeeeee !important;font-family:"Libre Franklin", serif !important}body .ui.container{font-family:"Libre Franklin", serif !important}body h1, h2, h3, h4, h5, h6, .ui.header, .headerFont{font-family:"Merriweather", sans-serif !important}body code, pre, tt, .monoFont{font-family:"Roboto Mono","SFMono-Regular","Menlo","Monaco","Consolas","Liberation Mono","Courier New", monospace !important}body div.z-index p.info{color:#808080}body div.z-index ul{list-style-type:square;padding-left:1.5em}body div.z-index .uplinks{margin-left:0.29999em}body .zettel-content h1#title-h1{background-color:rgba(33,133,208,0.1)}body nav.bottomPane{background-color:rgba(33,133,208,2.0e-2)}body div#footnotes{border-top-color:#2185d0}body p{line-height:150%}body img{max-width:100%}body .deemphasized{font-size:0.94999em}body .deemphasized:hover{opacity:1}body .deemphasized:not(:hover){opacity:0.69999}body .deemphasized:not(:hover) a{color:#808080 !important}body div.container.universe{padding-top:1em}body div.zettel-view ul{padding-left:1.5em;list-style-type:square}body div.zettel-view .pandoc .highlight{background-color:#ffff00}body div.zettel-view .pandoc .ui.disabled.fitted.checkbox{margin-right:0.29999em;vertical-align:middle}body div.zettel-view .zettel-content .metadata{margin-top:1em}body div.zettel-view .zettel-content .metadata div.date{text-align:center;color:#808080}body div.zettel-view .zettel-content h1{padding-top:0.2em;padding-bottom:0.2em;text-align:center}body div.zettel-view .zettel-content h2{border-bottom:solid 1px #4682b4;margin-bottom:0.5em}body div.zettel-view .zettel-content h3{margin:0px 0px 0.4em 0px}body div.zettel-view .zettel-content h4{opacity:0.8}body div.zettel-view .zettel-content div#footnotes{margin-top:4em;border-top-style:groove;border-top-width:2px;font-size:0.9em}body div.zettel-view .zettel-content div#footnotes ol > li > p:only-of-type{display:inline;margin-right:0.5em}body div.zettel-view .zettel-content aside.footnote-inline{width:30%;padding-left:15px;margin-left:15px;float:right;background-color:#d3d3d3}body div.zettel-view .zettel-content .overflows{overflow:auto}body div.zettel-view .zettel-content code{margin:auto auto auto auto;font-size:100%}body div.zettel-view .zettel-content p code, li code, ol code{padding:0.2em 0.2em 0.2em 0.2em;background-color:#f5f2f0}body div.zettel-view .zettel-content pre{overflow:auto}body div.zettel-view .zettel-content dl dt{font-weight:bold}body div.zettel-view .zettel-content blockquote{background-color:#f9f9f9;border-left:solid 10px #cccccc;margin:1.5em 0px 1.5em 0px;padding:0.5em 10px 0.5em 10px}body div.zettel-view .zettel-content.raw{background-color:#dddddd}body .ui.label.zettel-tag{color:#000000}body .ui.label.zettel-tag a{color:#000000}body nav.bottomPane ul.backlinks > li{padding-bottom:0.4em;list-style-type:disc}body nav.bottomPane ul.context-list > li{list-style-type:lower-roman}body .footer-version img{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}body .footer-version img:hover{-webkit-filter:grayscale(0%);-moz-filter:grayscale(0%);-ms-filter:grayscale(0%);-o-filter:grayscale(0%);filter:grayscale(0%)}body .footer-version, .footer-version a, .footer-version a:visited{color:#808080}body .footer-version a{font-weight:bold}body .footer-version{margin-top:1em !important;font-size:0.69999em}@media only screen and (max-width: 768px){body div#zettel-container{margin-left:0.4em !important;margin-right:0.4em !important}}body span.zettel-link-container span.zettel-link a{color:#2185d0;font-weight:bold;text-decoration:none}body span.zettel-link-container span.zettel-link a:hover{background-color:rgba(33,133,208,0.1)}body span.zettel-link-container span.extra{color:auto}body span.zettel-link-container.errors{border:solid 1px #ff0000}body span.zettel-link-container.errors span.zettel-link a:hover{text-decoration:none !important;cursor:not-allowed}body [data-tooltip]:after{font-size:0.69999em}body div.tag-tree div.node{font-weight:bold}body div.tag-tree div.node a.inactive{color:#555555}body .tree.flipped{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}body .tree{overflow:auto}body .tree ul.root{padding-top:0px;margin-top:0px}body .tree ul{position:relative;padding:1em 0px 0px 0px;white-space:nowrap;margin:0px auto 0px auto;text-align:center}body .tree ul::after{content:"";display:table;clear:both}body .tree ul:last-child{padding-bottom:0.1em}body .tree li{display:inline-block;vertical-align:top;text-align:center;list-style-type:none;position:relative;padding:1em 0.5em 0em 0.5em}body .tree li::before{content:"";position:absolute;top:0px;right:50%;border-top:solid 2px #cccccc;width:50%;height:1.19999em}body .tree li::after{content:"";position:absolute;top:0px;right:50%;border-top:solid 2px #cccccc;width:50%;height:1.19999em}body .tree li::after{right:auto;left:50%;border-left:solid 2px #cccccc}body .tree li:only-child{padding-top:0em}body .tree li:only-child::after{display:none}body .tree li:only-child::before{display:none}body .tree li:first-child::before{border-style:none;border-width:0px}body .tree li:first-child::after{border-radius:5px 0px 0px 0px}body .tree li:last-child::after{border-style:none;border-width:0px}body .tree li:last-child::before{border-right:solid 2px #cccccc;border-radius:0px 5px 0px 0px}body .tree ul ul::before{content:"";position:absolute;top:0px;left:50%;border-left:solid 2px #cccccc;width:0px;height:1.19999em}body .tree li div.forest-link{border:solid 2px #cccccc;padding:0.2em 0.29999em 0.2em 0.29999em;text-decoration:none;display:inline-block;border-radius:5px 5px 5px 5px;color:#333333;position:relative;top:2px}body .tree.flipped li div.forest-link{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}</style><script
|
|
async=""
|
|
id="MathJax-script"
|
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
|
|
></script>
|
|
<link
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css"
|
|
rel="stylesheet"
|
|
/><link rel="preconnect" href="https://fonts.googleapis.com" /><link
|
|
rel="preconnect"
|
|
href="https://fonts.gstatic.com"
|
|
crossorigin
|
|
/><link
|
|
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-core.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
|
<style>
|
|
body .ui.container,
|
|
body ul {
|
|
font-family: "IBM Plex Sans" !important;
|
|
}
|
|
body blockquote {
|
|
border-left-width: 3px !important;
|
|
font-style: italic;
|
|
}
|
|
.headerFont,
|
|
.ui.header,
|
|
body h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
font-family: "IBM Plex Sans Condensed" !important;
|
|
}
|
|
body p {
|
|
line-height: 1.4;
|
|
}
|
|
.monoFont,
|
|
body code,
|
|
pre,
|
|
tt {
|
|
font-family: "IBM Plex Mono" !important;
|
|
font-size: 12px !important;
|
|
line-height: 1.4 !important;
|
|
}
|
|
</style>
|
|
<!--replace-end-7--><!--replace-end-4--><!--replace-end-1--></head><body><div class="ui fluid container universe"><!--replace-start-2--><!--replace-start-3--><!--replace-start-6--><div class="ui text container" id="zettel-container" style="position: relative"><div class="zettel-view"><article class="ui raised attached segment zettel-content"><div class="pandoc"><h1 id="title-h1">Hexadecimal number system</h1><p>Hexadecimal is the other main number system used in computing. It works in tandem with the <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Binary number system"><a href="Binary_number_system.html">binary number system</a></span></span> and provides an easier and more accessible means of working with long sequences of binary numbers.</p><h2 id="hexadecimal-place-value">Hexadecimal place value</h2><p>Unlike denary which uses base ten and binary which uses base two, hexadecimal uses base 16 as its place value.</p><blockquote><p>Each place in a hexadecimal number represents a power of 16 and each place can be one of 16 symbols.</p></blockquote><h2 id="hexadecimal-values">Hexadecimal values</h2><p>The table below shows the symbols comprising hexadecimal alongside their denary and binary equivalents:</p><table class="ui table"><thead><tr><th>Hexadecimal</th><th>Decimal</th><th>Binary</th></tr></thead><tbody><tr><td>0</td><td>0</td><td>0000</td></tr><tr><td>1</td><td>1</td><td>0001</td></tr><tr><td>2</td><td>2</td><td>0010</td></tr><tr><td>3</td><td>3</td><td>0011</td></tr><tr><td>4</td><td>4</td><td>0100</td></tr><tr><td>5</td><td>5</td><td>0101</td></tr><tr><td>6</td><td>6</td><td>0110</td></tr><tr><td>7</td><td>7</td><td>0111</td></tr><tr><td>8</td><td>8</td><td>1000</td></tr><tr><td>9</td><td>9</td><td>1001</td></tr><tr><td>A</td><td>10</td><td>1010</td></tr><tr><td>B</td><td>11</td><td>1011</td></tr><tr><td>C</td><td>12</td><td>1100</td></tr><tr><td>D</td><td>13</td><td>1101</td></tr><tr><td>E</td><td>14</td><td>1110</td></tr><tr><td>F</td><td>15</td><td>1111</td></tr></tbody></table><p>This table shows the raw value of each hexadecimal place value:</p><table class="ui table"><thead><tr><th><span class="math inline">\(16^{3}\)</span></th><th><span class="math inline">\(16^{2}\)</span></th><th><span class="math inline">\(16^{1}\)</span></th><th><span class="math inline">\(16^{0}\)</span></th></tr></thead><tbody><tr><td>4096</td><td>256</td><td>16</td><td>1</td></tr></tbody></table><h2 id="hexadecimal-prefix">Hexadecimal prefix</h2><p>The custom is to prefix a hexadecimal number with <code>0x</code> to indicate that the number is hexadecimal.</p><h2 id="converting-hexadecimal-numbers">Converting hexadecimal numbers</h2><p>Using the previous table we can convert hexadecimal values to decimal.</p><p>For example we can convert <code>1A5</code> as follows, working from right to left:</p><p><span class="math inline">\((5 \cdot 1 = 5) + (A \cdot 16 = 160) + (1 \cdot 256 = 256) = 421\)</span></p><p>The process is quite easy: we get the n from <span class="math inline">\(16^{n}\)</span> based on the position of the digit and then multiply this by the value of the symbol (1,2,…F):</p><p><span class="math display">$$
|
|
16^{n} \cdot 1,2,...F
|
|
$$</span></p><p>As applied to <code>0x1A5</code>:</p><table class="ui table"><thead><tr><th><span class="math inline">\(16^{3}\)</span></th><th><span class="math inline">\(16^{2}\)</span></th><th><span class="math inline">\(16^{1}\)</span></th><th><span class="math inline">\(16^{0}\)</span></th></tr></thead><tbody><tr><td><span class="math inline">\(1\cdot 16^{3} = 4096\)</span></td><td><span class="math inline">\(1\cdot 16^{2} = 256\)</span></td><td><span class="math inline">\(A (10)\cdot 16^{1} = 160\)</span></td><td><span class="math inline">\(5\cdot 16^{0} = 5\)</span></td></tr></tbody></table><p>Another example for <code>0xF00F</code>:</p><p><span class="math inline">\((15 \cdot 4096 = 61440) + (0 \cdot 256 = 0) + (0 \cdot 16 = 0) + (15 \cdot 1 = 15) = 61455\)</span></p><h2 id="using-hexadecimal-to-simplify-binary-numbers">Using hexadecimal to simplify binary numbers</h2><p>Whilst computers themselves do not use the hexadecimal number system (everything is binary), hexadecimal offers advantages for humans who must work with binary:</p><ol><li>It is much easier to read a hexadecimal number than long sequences of binary numbers</li><li>It is easier to quickly convert binary numbers to hexadecimal than to convert binary numbers to decimal</li></ol><p>Look at the following equivalences</p><table class="ui table"><thead><tr><th>Number system</th><th>Example 1</th><th>Example 2</th></tr></thead><tbody><tr><td><strong>Binary</strong></td><td>1111 0000 0000 1111</td><td>1000 1000 1000 0001</td></tr><tr><td><strong>Hexadecimal</strong></td><td>F00F</td><td>8881</td></tr><tr><td><strong>Decimal</strong></td><td>61,455</td><td>34,945</td></tr></tbody></table><p>It is obvious that a pattern is maintained between the hexadecimal and binary numbers and that this pattern is obscured by the decimal conversion. In the first example the binary half-byte <code>1111</code> is matched by the hexadecimal <code>F00F</code>.</p><p>Mathematically comparing hex <code>F</code> and binary <code>1111</code>:</p><p><span class="math display">$$
|
|
\textsf{1111} = ((1 \cdot 2^{3}) + (1 \cdot 2^{2}) + (1 \cdot 2^{1}) + (1 \cdot 2^{0})) \\
|
|
= 8 + 4 + 2 + 1 \\
|
|
= 15
|
|
$$</span></p><p><span class="math display">$$
|
|
\textsf{F} = 15 \cdot 16^{0} \\
|
|
= 15
|
|
$$</span></p><p><img src="/static/hexadecimal-to-bytes.svg" /></p><blockquote><p>Every four bits (or half byte) in binary corresponds to one symbol in hexadecimal. Therefore <strong>a byte can be easily represented with two hexadecimal symbols, a 16-bit number can be represented with four hex symbols, a 32-bit number can represented with eight hex symbols and so on.</strong></p></blockquote></div></article><nav class="ui attached segment deemphasized backlinksPane" id="neuron-backlinks-pane"><h3 class="ui header">Backlinks</h3><ul class="backlinks"><li><span class="zettel-link-container cf"><span class="zettel-link"><a href="Memory_addresses.html">Memory addresses</a></span></span><ul class="context-list" style="zoom: 85%;"><li class="item"><div class="pandoc"><p>This is hard to parse so we can instead use <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Hexadecimal number system"><a href="Hexadecimal_number_system.html">hexadecimal numbers</a></span></span> to represent the addresses:</p></div></li></ul></li><li><span class="zettel-link-container cf"><span class="zettel-link"><a href="Machine_code.html">Machine code</a></span></span><ul class="context-list" style="zoom: 85%;"><li class="item"><div class="pandoc"><p>Binary sequences are hard to understand, even if converted to the <span class="zettel-link-container cf"><span class="zettel-link"><a href="Hexadecimal_number_system.html">Hexadecimal number system</a></span></span>. We have a better way of managing operations on the machine level: <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Assembly"><a href="Assembly.html">assembly</a></span></span></p></div></li></ul></li><li><span class="zettel-link-container cf"><span class="zettel-link"><a href="MAC_addresses.html">MAC addresses</a></span></span><ul class="context-list" style="zoom: 85%;"><li class="item"><div class="pandoc"><p>MAC addresses consist of 6 bytes (48-bits) represented as 12 <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Hexadecimal number system"><a href="Hexadecimal_number_system.html">hexadecimal_digits</a></span></span>.</p></div></li></ul></li><li><span class="zettel-link-container cf"><span class="zettel-link"><a href="Binary_number_system.html">Binary number system</a></span></span><ul class="context-list" style="zoom: 85%;"><li class="item"><div class="pandoc"><p>To distinguish numbers in binary from decimal or <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Hexadecimal number system"><a href="Hexadecimal_number_system.html">hexadecimal</a></span></span> numbers, it is common to use the prefix <code>0b</code>. Thus, e.g, <code>0b110</code> for decimal <code>6</code>.</p></div></li></ul></li><li><span class="zettel-link-container cf"><span class="zettel-link"><a href="Assembly.html">Assembly</a></span></span><ul class="context-list" style="zoom: 85%;"><li class="item"><div class="pandoc"><p><span class="zettel-link-container cf"><span class="zettel-link"><a href="Hexadecimal_number_system.html">Hexadecimal number system</a></span></span>, <span class="zettel-link-container cf"><span class="zettel-link"><a href="Instruction_set_architectures.html">Instruction Set Architectures</a></span></span>, <span class="zettel-link-container cf"><span class="zettel-link"><a href="CPU_architecture.html">CPU architecture</a></span></span></p></div></li></ul></li></ul></nav><nav class="ui attached segment deemphasized bottomPane" id="neuron-tags-pane"><div><span class="ui basic label zettel-tag" title="Tag">computer-architecture</span><span class="ui basic label zettel-tag" title="Tag">number-systems</span></div></nav><nav class="ui bottom attached icon compact inverted menu blue" id="neuron-nav-bar"><!--replace-start-9--><!--replace-end-9--><a class="right item" href="impulse.html" title="Open Impulse"><i class="wave square icon"></i></a></nav></div></div><!--replace-end-6--><!--replace-end-3--><!--replace-end-2--><div class="ui center aligned container footer-version"><div class="ui tiny image"><a href="https://neuron.zettel.page"><img alt="logo" src="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" title="Generated by Neuron 1.9.35.3" /></a></div></div></div></body></html> |