Системы счисления |
---|
Индусско-арабская система счисления |
Восточная Азия |
Американец |
|
По алфавиту |
Бывший |
|
Позиционные системы по основанию |
|
Нестандартные позиционные системы счисления |
|
Список систем счисления |
В математике и вычислительной технике шестнадцатеричная система счисления (также с основанием 16 или шестнадцатеричной ) представляет собой позиционную систему счисления, которая представляет числа с использованием системы счисления с основанием 16. В отличие от обычного способа представления чисел с использованием 10 символов, шестнадцатеричная система исчисления использует 16 различных символов, чаще всего символы «0» - «9» представляют значения от 0 до 9, и «A» - «F» (или альтернативно «a» - «f») для представления значений от 10 до 15.
Шестнадцатеричные числа широко используются разработчиками компьютерных систем и программистами, поскольку они обеспечивают удобное для человека представление двоичных значений. Каждая шестнадцатеричная цифра представляет собой четыре бита (двоичные цифры), также известные как полубайт (или Nybble), которая составляет половину байта . Например, один байт может иметь значения от 00000000 до 11111111 в двоичной форме, которые можно удобно представить как от 00 до FF в шестнадцатеричной системе.
В математике для обозначения основания обычно используется нижний индекс. Например, десятичное значение36,117 будет выражено в шестнадцатеричной системе счисления как 8D15 16 . В программировании для обозначения шестнадцатеричных чисел используется ряд обозначений, обычно с префиксом или суффиксом. Префикс 0x
используется в C и родственных языках программирования, что обозначает это значение как 0x8D15
.
Шестнадцатеричный используется в кодировке передачи Base16 , в которой каждый байт открытого текста разбивается на два 4-битных значения и представляется двумя шестнадцатеричными цифрами.
Представление [ править ]
Письменное представление [ править ]
Практически во всех современных случаях буквы A – F или a – f представляют значения 10–15, а цифры 0–9 используются для обозначения их обычных значений.
Не существует универсального соглашения об использовании строчных или прописных букв, поэтому каждый из них является преобладающим или предпочтительным в определенных средах по стандартам или соглашению сообщества; часто используется даже смешанный регистр. В семисегментных дисплеях используется AbCdEF в смешанном регистре, чтобы цифры можно было отличить друг от друга.
Существует некоторая стандартизация использования пробелов (а не запятых или других знаков препинания) для разделения шестнадцатеричных значений в длинном списке. Например, в следующем шестнадцатеричном дампе каждый 8-битный байт представляет собой двухзначное шестнадцатеричное число с пробелами между ними, а 32-битное смещение в начале - это восьмизначное шестнадцатеричное число.
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 | редактировать. |
Отличие от десятичного [ править ]
В контекстах, где основание неясно, шестнадцатеричные числа могут быть неоднозначными и путаться с числами, выраженными в других основаниях. Есть несколько соглашений для однозначного выражения ценностей. Числовой индекс (сам записанный в десятичном формате) может явно указывать основание: 159 10 - десятичное 159; 159 16 является шестнадцатеричным числом 159, что равно 345 10 . Некоторые авторы предпочитают текстовые подстрочные индексы, например 159 в десятичной системе счисления и 159 в шестнадцатеричной системе счисления или 159 d и 159 h .
Дональд Кнут ввел использование определенного шрифта для представления определенного основания в своей книге The TeXbook . [1] Шестнадцатеричные представления записаны там шрифтом пишущей машинки: 5A3
В линейных текстовых системах, таких как те, которые используются в большинстве сред компьютерного программирования, возникло множество методов:
- Оболочки Unix (и связанные с ним), язык ассемблера AT&T, а также язык программирования C (и его синтаксические потомки, такие как C ++ , C # , Go , D , Java , JavaScript , Python и Windows PowerShell ) используют префикс
0x
для числовых констант, представленных в шестнадцатеричном формате:0x5A3
. Символьные и строковые константы могут выражать коды символов в шестнадцатеричном формате с префиксом,\x
за которым следуют две шестнадцатеричные цифры:'\x1B'
представляет управляющий символ Esc ;"\x1B[0m\x1B[25;1H"
представляет собой строку, содержащую 11 символов с двумя встроенными символами Esc.[2] Для вывода целого числа в шестнадцатеричном формате с помощьюсемейства функций printf используется код преобразования формата%X
или%x
. - В URI (включая URL-адреса ) коды символов записываются в виде шестнадцатеричных пар с префиксом
%
:http://www.example.com/name%20with%20spaces
где%20
- это код пробела (пробела) , кодовая точка ASCII 20 в шестнадцатеричном формате , 32 в десятичном. - В XML и XHTML символы могут быть выражены как шестнадцатеричные числовые ссылки на символы с использованием нотации , например, представляют собой символ U + 2019 (правая одинарная кавычка). Если нет, число является десятичным (то есть это тот же символ). [3]
ode;
’
x
’
- В стандарте Unicode символьное значение представлено с
U+
последующим шестнадцатеричным значением, например,U+20AC
это знак евро (€). - Ссылки на цвета в HTML, CSS и X Window могут быть выражены шестью шестнадцатеричными цифрами (по две для красного, зеленого и синего компонентов в указанном порядке) с префиксом
#
: белый, например, представляется как#FFFFFF
. [4] CSS также допускает трехзначные сокращения с одной шестнадцатеричной цифрой на компонент: # FA3 сокращает # FFAA33 (золотой оранжевый: ). - В кодировке с кавычками и печатью MIME (расширения электронной почты) коды символов записываются в виде шестнадцатеричных пар с префиксом : is "España" (F1 - это код для ñ в наборе символов ISO / IEC 8859-1). [5] )
=
Espa=F1a
- В языках ассемблера Intel и Modula-2 шестнадцатеричное [6] обозначается суффиксом H или h : или . В некоторых реализациях требуется начальный ноль, когда первый шестнадцатеричный символ цифры не является десятичной цифрой, поэтому вместо
FFh
05A3H
0FFh
FFh
- Другие языки сборки ( 6502 , Motorola ), Pascal , Delphi , некоторые версии BASIC ( Commodore ), GameMaker Язык , Годы и Forth использовать в
$
качестве префикса:$5A3
. - Некоторые языки ассемблера (Microchip) используют нотацию
H'ABCD'
(для ABCD 16 ). Точно так же Fortran 95 использует Z'ABCD '. - Ада и VHDL заключите шестнадцатеричные цифры в основе «цифровых кавычках»:
16#5A3#
. Для констант битовых векторов VHDL использует обозначениеx"5A3"
. [7] - Verilog представляет шестнадцатеричные константы в форме
8'hFF
, где 8 - количество бит в значении, а FF - шестнадцатеричная константа. - В языке Smalltalk используется префикс
16r
:16r5A3
- PostScript и Bourne оболочки и ее производные обозначают шестигранный с префиксом
16#
:16#5A3
. Для PostScript двоичные данные (например, пиксели изображения ) могут быть выражены как последовательные шестнадцатеричные пары без префикса:AA213FD51B3801043FBC
... - Common Lisp использует префиксы
#x
и#16r
. Установка переменных * read-base * [8] и * print-base * [9] на 16 также может использоваться для переключения считывателя и принтера системы Common Lisp на шестнадцатеричное представление чисел для чтения и печати чисел. Таким образом, шестнадцатеричные числа могут быть представлены без префиксного кода #x или # 16r, когда база ввода или вывода была изменена на 16. - MSX BASIC , [10] QuickBASIC , FreeBASIC и Visual Basic префикс шестнадцатеричных чисел с
&H
:&H5A3
- BBC BASIC и Locomotive BASIC используют
&
для hex. [11] - В сериях ТИ-89 и 92 используется
0h
префикс:0h5A3
- Алгол 68 используется префикс
16r
для обозначения шестнадцатеричных чисел:16r5a3
. Аналогичным образом можно указать двоичные, четвертичные (основание 4) и восьмеричные числа. - Наиболее распространенным форматом шестнадцатеричного числа на мэйнфреймах IBM ( zSeries ) и компьютерах среднего класса ( IBM System i ), работающих под управлением традиционных ОС ( zOS , zVSE , zVM , TPF , IBM i ), является
X'5A3'
и используется в Assembler, PL / I , COBOL , JCL , скрипты, команды и другие места. Этот формат был распространен и на других (и теперь уже устаревших) системах IBM. Иногда вместо апострофов использовались кавычки. - Любой IPv6 - адрес может быть записан в виде восьми групп из четырех шестнадцатеричных цифр (иногда называемые hextets ), где каждая группа отделена двоеточием (
:
). Это, например, действительный адрес IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334
или сокращенный путем удаления нулей как2001:db8:85a3::8a2e:370:7334
( адреса IPv4 обычно записываются в десятичном формате). - Глобальные уникальные идентификаторы записываются в виде тридцати двух шестнадцатеричных цифр, например, часто в неравных группах, разделенных дефисами
3F2504E0-4F89-41D3-9A0C-0305E82C3301
.
Другие символы для 10-15 [ править ]
Использование букв от A до F для обозначения цифр выше 9 не было универсальным в ранней истории компьютеров.
- В течение 1950-х годов в некоторых установках, таких как Bendix-14, предпочитали использовать цифры от 0 до 5 с верхней чертой для обозначения значений 10-15 как 0 , 1 , 2 , 3 , 4 и 5 .
- SWAC (1950) [12] и Bendix G-15 (1956) [13] [12] компьютеры использовали строчные буквы U , V , W , х , Y и Z для значений от 10 до 15.
- Illiac I (1952) компьютер использовали заглавные буквы K , S , N , J , F и L для значений от 10 до 15. [14] [12]
- Librascope LGP-30 (1956) использовал буквы F , G , J , K , Q и W для значений от 10 до 15. [15] [12]
- Honeywell Datamatic Д-одна тысяча (один тысяча девятьсот пятьдесят-семь) использовала строчные буквы б , гр , д , е , п и г , тогда как Elbit 100 (1967) использовала заглавные буквы B , C , D , E , F и G для значений 10–15. [12]
- Monrobot XI (1960) использовали буквы S , T , U , V , W и X для значений от 10 до 15. [12]
- NEC параметроне компьютер НЕАК 1103 (1960) использовали буквы D , G , H , J , K (и , возможно , V ) для значений 10-15. [16]
- В Pacific Data Systems 1020 (1964) использовались буквы L , C , A , S , M и D для значений от 10 до 15. [12]
- Новые числовые символы и имена были введены в биби-двоичную нотацию Боби Лапойнтом в 1968 году. Эта нотация не стала очень популярной.
- Брюс Алан Мартин из Брукхейвенской национальной лаборатории счел выбор A – F «нелепым». В письме 1968 года редактору CACM он предложил совершенно новый набор символов, основанный на расположении битов, который не получил большого признания. [17]
- Некоторые микросхемы декодера с семисегментным дисплеем показывают случайный результат логики, предназначенной только для правильного вывода 0–9.
Вербальные и цифровые представления [ править ]
Традиционных цифр для обозначения величин от десяти до пятнадцати нет - вместо них используются буквы - и в большинстве европейских языков отсутствуют недесятичные имена для цифр выше десяти. Несмотря на то, что в английском языке есть имена для нескольких недесятичных степеней ( пара для первой двоичной степени, оценка для первой десятичной степени, дюжина , брутто и большая брутто для первых трех двенадцатеричных степеней), ни одно английское название не описывает шестнадцатеричные степени (десятичная 16 , 256, 4096, 65536, ...). Некоторые люди читают шестнадцатеричные числа цифру за цифрой, например номер телефона, или используя фонетический алфавит НАТО., Объединенный фонетический алфавит армии / флота или аналогичную специальную систему. После того, как программисты IBM System / 360 приняли шестнадцатеричный код , Магнусон (1968) [18] предложил руководство по произношению, которое давало короткие имена буквам шестнадцатеричного числа - например, «А» произносилось как «анн», «В». bet », C« chris »и т. д. [18] Другая система именования была разработана Баббом (2015) из сериала в качестве шутки. [19] Еще одна система именования была опубликована в Интернете Роджерсом (2007) [20], которая пытается сделать вербальное представление различимым в любом случае, даже если фактическое число не содержит чисел A – F. Примеры приведены в таблицах ниже.
Системы подсчета на цифры были разработаны как для двоичной и шестнадцатеричной. Артур Кларк предложил использовать каждый палец как бит включения / выключения, позволяя считать по пальцам от нуля до 1023 · 10 на десяти пальцах. [21] Другая система для подсчета до FF 16 (255 10 ) показана справа.
Число | Произношение |
---|---|
А | Анна |
B | держать пари |
C | Крис |
D | точка |
E | Эрнест |
F | мороз |
1А | annteen |
A0 | муравейник |
5B | пятьдесят ставка |
A01C | Аннти Кристин |
1AD0 | Annteen dotty |
3A7D | тридцать лет семьдесят точек |
Число | Произношение |
---|---|
А | десять |
B | 11 |
C | двенадцать |
D | драпировать |
F | фим |
10 | текс |
11 | Oneteek |
1F | Fimteek |
50 | фифтек |
C0 | Twelftek |
100 | хундрек |
1000 | thousek |
3E | Thirtek-Eptwin |
E1 | eptek-one |
C4A | двенадцать-хундрек-фуртек-десять |
1743 | один-тысяча- семь- -хундрек-фуртек-три |
Знаки [ править ]
В шестнадцатеричной системе отрицательные числа могут быть выражены так же, как и в десятичной: −2A для представления −42 10 и так далее.
Шестнадцатеричный формат также может использоваться для выражения точных битовых шаблонов, используемых в процессоре , поэтому последовательность шестнадцатеричных цифр может представлять знаковое значение или даже значение с плавающей запятой . Таким образом, отрицательное число -42 10 может быть записано как FFFF FFD6 в 32-битном регистре ЦП (с дополнением до двух), как C228 0000 в 32-битном регистре FPU или C045 0000 0000 0000 в 64-битном FPU регистр (в стандарте с плавающей запятой IEEE ).
Шестнадцатеричная экспоненциальная запись [ править ]
Как десятичные числа могут быть представлены в экспоненциальной записи , так и шестнадцатеричные числа. По соглашению, буква Р (или р , для «власти») представляет раз два поднял к силе , тогда Е (или е ) служит те же цели в десятичной системе как часть E нотации . Число после P является десятичным и представляет двоичную экспоненту. Увеличение показателя степени на 1 умножается на 2, а не на 16. 10.0p1 = 8.0p2 = 4.0p3 = 2.0p4 = 1.0p5. Обычно число нормализуется так, чтобы ведущая шестнадцатеричная цифра была 1 (если только значение не равно 0).
Пример: 1.3DEp42 представляет 1.3DE 16 × 2 42 10 .
Шестнадцатеричное экспоненциальное представление требуется стандартом двоичных чисел с плавающей запятой IEEE 754-2008 . Эта запись может быть использована для операций с плавающей точкой литералов в C99 издании языка программирования Си . [22] Используя спецификаторы преобразования % a или % A , эту нотацию можно создать с помощью реализаций семейства функций printf в соответствии со спецификацией C99 [23] и стандартом POSIX Single Unix Specification (IEEE Std 1003.1) . [24]
Конверсия [ править ]
Двоичное преобразование [ править ]
Большинство компьютеров манипулируют двоичными данными, но людям сложно работать с большим количеством цифр даже для относительно небольшого двоичного числа. Хотя большинство людей знакомы с системой с основанием 10, гораздо проще отобразить двоичный код в шестнадцатеричный, чем в десятичный, потому что каждая шестнадцатеричная цифра соответствует целому количеству битов (4 10 ). В этом примере 1111 2 преобразуется в десятичное . Поскольку каждая позиция в двоичном числе может содержать либо 1, либо 0, его значение можно легко определить по положению справа:
- 0001 2 = 1 10
- 0010 2 = 2 10
- 0100 2 = 4 10
- 1000 2 = 8 10
Следовательно:
1111 2 | = 8 10 + 4 10 + 2 10 + 1 10 |
= 15 10 |
После небольшой практики сопоставление 1111 2 с F 16 за один шаг становится простым: см. Таблицу в письменном виде . Преимущество использования шестнадцатеричного числа, а не десятичного, быстро увеличивается с размером числа. Когда число становится большим, преобразование в десятичное очень утомительно. Однако при отображении в шестнадцатеричный формат двоичную строку тривиально рассматривать как группы из 4 цифр и отображать каждую в одну шестнадцатеричную цифру.
В этом примере показано преобразование двоичного числа в десятичное, сопоставление каждой цифры с десятичным значением и сложение результатов.
(01011110101101010010) 2 | = 262144 10 + 65536 10 + 32768 10 + 16384 10 + 8192 10 + 2048 10 + 512 10 + 256 10 + 64 10 + 16 10 + 2 10 |
= 387922 10 |
Сравните это с преобразованием в шестнадцатеричное, где каждую группу из четырех цифр можно рассматривать независимо и преобразовывать напрямую:
(01011110101101010010) 2 | знак равно | 0101 | 1110 | 1011 | 0101 | 0010 2 |
знак равно | 5 | E | B | 5 | 2 16 | |
знак равно | 5EB52 16 |
Преобразование из шестнадцатеричного в двоичное также происходит напрямую.
Другие простые преобразования [ править ]
Хотя четвертичный (основание 4) мало используется, его можно легко преобразовать в шестнадцатеричный или двоичный формат и обратно. Каждая шестнадцатеричная цифра соответствует паре четвертичных цифр, а каждая четвертичная цифра соответствует паре двоичных цифр. В приведенном выше примере 5 E B 5 2 16 = 11 32 23 11 02 4 .
Восьмеричное (основание 8) Кроме того, система может быть преобразована с относительной легкостью, хотя и не столь тривиально , как с основаниями 2 и 4. Каждая восьмеричная цифра соответствует трем двоичных цифр, а не четыре. Следовательно, мы можем преобразовать восьмеричное и шестнадцатеричное числа с помощью промежуточного преобразования в двоичное с последующей перегруппировкой двоичных цифр в группы по три или четыре.
Остаток деления в исходной базе [ править ]
Как и во всех базах, существует простой алгоритм преобразования представления числа в шестнадцатеричное путем выполнения операций целочисленного деления и остатка в исходной базе. Теоретически это возможно с любой базы, но для большинства людей с помощью этого метода можно легко обрабатывать только десятичные числа, а для большинства компьютеров только двоичные (которые могут быть преобразованы гораздо более эффективными методами).
Пусть d будет числом, которое нужно представить в шестнадцатеричном формате, а ряд h i h i − 1 ... h 2 h 1 будет шестнадцатеричными цифрами, представляющими это число.
- я ← 1
- h i ← d мод 16
- d ← (d - h i ) / 16
- Если d = 0 (возврат серии h i ), иначе увеличьте i и перейдите к шагу 2
«16» может быть заменено любым другим основанием, которое может быть желательным.
Ниже приведена реализация вышеуказанного алгоритма в JavaScript для преобразования любого числа в шестнадцатеричное в строковом представлении. Его цель - проиллюстрировать описанный выше алгоритм. Однако для серьезной работы с данными гораздо более целесообразно работать с побитовыми операторами .
функция toHex ( d ) { var r = d % 16 ; если ( d - r == 0 ) { вернуться кChar ( r ); } return toHex (( d - r ) / 16 ) + toChar ( r ); }функция toChar ( n ) { const alpha = "0123456789ABCDEF" ; вернуть альфу . charAt ( n ); }
Преобразование посредством сложения и умножения [ править ]
Также возможно выполнить преобразование, присвоив каждому месту в исходной базе шестнадцатеричное представление его значения разряда - перед выполнением умножения и сложения для получения окончательного представления. Например, чтобы преобразовать число B3AD в десятичное, можно разделить шестнадцатеричное число на его цифры: B (11 10 ), 3 (3 10 ), A (10 10 ) и D (13 10 ), а затем получить окончательное результат умножения каждого десятичного представления на 16 p ( p - соответствующая позиция шестнадцатеричной цифры, считая справа налево, начиная с 0). В этом случае мы имеем следующее:
B3AD = (11 × 16 3 ) + (3 × 16 2 ) + (10 × 16 1 ) + (13 × 16 0 )
что составляет 45997 в базе 10.
Инструменты для конвертации [ править ]
Большинство современных компьютерных систем с графическим пользовательским интерфейсом предоставляют встроенную утилиту-калькулятор, способную выполнять преобразования между различными основами системы счисления, и в большинстве случаев также включают шестнадцатеричные.
В Microsoft Windows , то калькулятор утилита может быть установлена в Научно - режиме ( так называемый режимом Программист в некоторых версиях), что позволяет преобразование между поразрядным 16 (шестнадцатиричным), 10 (десятичным), 8 ( восьмеричным ) и 2 ( двоичным ), основами наиболее обычно используется программистами. В научном режиме экранная цифровая клавиатура включает шестнадцатеричные цифры от A до F, которые активны при выборе «Hex». Однако в шестнадцатеричном режиме калькулятор Windows поддерживает только целые числа.
Элементарная арифметика [ править ]
Элементарные операции, такие как сложение, вычитание, умножение и деление, могут выполняться косвенно путем преобразования в альтернативную систему счисления , такую как обычно используемую десятичную систему или двоичную систему, где каждая шестнадцатеричная цифра соответствует четырем двоичным цифрам.
В качестве альтернативы можно также выполнять элементарные операции непосредственно в самой шестнадцатеричной системе - полагаясь на ее таблицы сложения / умножения и соответствующие стандартные алгоритмы, такие как деление в столбик и традиционный алгоритм вычитания. [25]
Реальные числа [ править ]
Рациональные числа [ править ]
Как и в других системах счисления, шестнадцатеричная система может использоваться для представления рациональных чисел , хотя повторяющиеся расширения являются обычным явлением, поскольку шестнадцать (10 16 ) имеют только один простой множитель; два.
Для любой основы 0,1 (или «1/10») всегда эквивалентно единице, деленной на представление этого базового значения в его собственной системе счисления. Таким образом, при делении единицы на два для двоичной или при делении единицы на шестнадцать для шестнадцатеричной, обе эти дроби записываются как 0.1
. Поскольку основание системы счисления 16 представляет собой полный квадрат (4 2 ), дроби, выраженные в шестнадцатеричном формате, имеют нечетный период гораздо чаще, чем десятичные, и отсутствуют циклические числа (кроме тривиальных однозначных чисел). Повторяющиеся цифры отображаются, когда знаменатель в младших членах имеет простой множитель, не найденный в системе счисления; таким образом, при использовании шестнадцатеричной системы счисления все дроби, знаменатели которых не являются степенью двойкиприводит к бесконечной строке повторяющихся цифр (например, третей и пятых). Это делает шестнадцатеричное (и двоичное) менее удобным, чем десятичное, для представления рациональных чисел, поскольку большая часть лежит за пределами диапазона конечного представления.
Все рациональные числа, конечно представимые в шестнадцатеричном формате, также могут быть конечно представлены в десятичном, двенадцатеричном и шестидесятеричном формате: то есть любое шестнадцатеричное число с конечным числом цифр также имеет конечное число цифр, если оно выражено в этих других основаниях. И наоборот, только часть тех, которые конечно представимы в последних базисах, конечно представима в шестнадцатеричной системе счисления. Например, десятичное число 0,1 соответствует бесконечному повторяющемуся представлению 0,1 9 в шестнадцатеричном формате. Однако шестнадцатеричный формат более эффективен, чем двенадцатеричный и шестидесятеричный для представления дробей со степенью двойки в знаменателе. Например, 0,0625 10 (одна шестнадцатая) эквивалентно 0,1 16 , 0,09 12., и 0; 3,45 60 .
п | Десятичные простые множители основания, b = 10: 2 , 5 ; б - 1 = 9: 3 ; б + 1 = 11: 11 | Шестнадцатеричные простые множители основания, b = 16 10 = 10: 2 ; б - 1 = 15 10 = F: 3, 5 ; б + 1 = 17 10 = 11:11 | ||||
---|---|---|---|---|---|---|
Дробная часть | главные факторы | Позиционное представительство | Позиционное представительство | главные факторы | Фракция (1 / n) | |
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,1 6 | 0,2 А | 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,1 9 | 2 , 5 | 1 / А |
11 | 1/11 | 11 | 0. 09 | 0. 1745D | B | 1 / B |
12 | 1/12 | 2 , 3 | 0,08 3 | 0,1 5 | 2 , 3 | 1 / С |
13 | 1/13 | 13 | 0. 076923 | 0. 13B | D | 1 / D |
14 | 1/14 | 2 , 7 | 0,0 714285 | 0,1 249 | 2 , 7 | 1 / E |
15 | 1/15 | 3 , 5 | 0,0 6 | 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,0 5 | 0,0 E38 | 2 , 3 | 1/12 |
19 | 1/19 | 19 | 0. 052631578947368421 | 0. 0D79435E5 | 13 | 1/13 |
20 | 1/20 | 2 , 5 | 0,05 | 0,0 С | 2 , 5 | 1/14 |
21 год | 1/21 | 3 , 7 | 0. 047619 | 0. 0C3 | 3 , 7 | 1/15 |
22 | 1/22 | 2 , 11 | 0,0 45 | 0,0 BA2E8 | 2 , Б | 1/16 |
23 | 1/23 | 23 | 0. 0434782608695652173913 | 0. 0B21642C859 | 17 | 1/17 |
24 | 1/24 | 2 , 3 | 0,041 6 | 0,0 А | 2 , 3 | 1/18 |
25 | 1/25 | 5 | 0,04 | 0. 0A3D7 | 5 | 1/19 |
26 год | 1/26 | 2 , 13 | 0,0 384615 | 0,0 9D8 | 2 , Д | 1 / 1А |
27 | 1/27 | 3 | 0. 037 | 0. 097B425ED | 3 | 1 / 1B |
28 год | 1/28 | 2 , 7 | 0,03 571428 | 0,0 924 | 2 , 7 | 1 / 1С |
29 | 29 января | 29 | 0. 0344827586206896551724137931 | 0. 08D3DCB | 1D | 1 / 1D |
30 | 1/30 | 2 , 3 , 5 | 0,0 3 | 0,0 8 | 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 , Б | 1/21 |
34 | 1/34 | 2 , 17 | 0,0 2941176470588235 | 0,0 78 | 2 , 11 | 1/22 |
35 год | 1/35 | 5 , 7 | 0,0 285714 | 0. 075 | 5 , 7 | 1/23 |
36 | 1/36 | 2 , 3 | 0,02 7 | 0,0 71C | 2 , 3 | 1/24 |
Иррациональные числа [ править ]
В таблице ниже приведены расширения некоторых распространенных иррациональных чисел в десятичной и шестнадцатеричной системе счисления.
Число | Позиционное представительство | |
---|---|---|
Десятичный | Шестнадцатеричный | |
√ 2 (длина диагонали единичного квадрата ) | 1,414 213 562 373 095 048 ... | 1.6A09E667F3BCD ... |
√ 3 (длина диагонали единичного куба ) | 1,732 050 807 568 877 293 ... | 1.BB67AE8584CAA ... |
√ 5 (длина диагонали прямоугольника 1 × 2 ) | 2,236 067 977 499 789 696 ... | 2.3C6EF372FE95 ... |
φ (фи, золотое сечение = (1+ √ 5 ) / 2 ) | 1,618 033 988 749 894 848 ... | 1.9E3779B97F4A ... |
π (пи, отношение длины окружности к диаметру круга) | 3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 ... | 3.243F6A8885A308D313198A2E0 3707344A4093822299F31D008 ... |
e (основание натурального логарифма ) | 2,718 281 828 459 045 235 ... | 2.B7E151628AED2A6B ... |
τ ( постоянная Туэ – Морса ) | 0,412 454 033 640 107 597 ... | 0,6996 9669 9669 6996 ... |
γ (предельная разница между гармоническим рядом и натуральным логарифмом) | 0,577 215 664 901 532 860 ... | 0.93C467E37DB0C7A4D1B ... |
Полномочия [ править ]
Степень двойки имеет очень простое шестнадцатеричное разложение. Первые шестнадцать степеней двойки показаны ниже.
2 х | Ценить | Значение (десятичное) |
---|---|---|
2 0 | 1 | 1 |
2 1 | 2 | 2 |
2 2 | 4 | 4 |
2 3 | 8 | 8 |
2 4 | 10 шестигранник | 16 дек |
2 5 | 20 шестигранник | 32 дек |
2 6 | 40 шестигранник | 64 дек |
2 7 | 80 шестигранник | 128 дек |
2 8 | 100 шестигранник | 256 дек |
2 9 | 200 шестигранник | 512 дек |
2 А (2 10 дес. ) | 400 шестигранник | 1024 дек |
2 Б (2 11 уб ) | 800 шестигранник | 2048 декабрь |
2 С (2 12 уб ) | 1000 шестигранник | 4096 дек |
2 пр (2 13 уб ) | 2000 шестигранник | 8192 дек |
2 E (2 14 дек ) | 4000 шестигранник | 16,384 дек |
2 ж (2 15 уб ) | 8000 шестигранник | 32,768 дек |
2 10 (2 16 уб ) | 10000 шестнадцатеричный | 65 536 дек |
Культурный [ править ]
Этимология [ править ]
Слово шестнадцатеричное состоят из гекса- , происходящий от греческой ЕЕ (HEX) для шесть , и десятичного целого , полученной от латинского на десятую . В онлайн - издании «Третий новый интернационал Вебстера» шестнадцатеричные числа выводятся как разновидность латинских шестнадцатеричных чисел (которые упоминаются в более ранней документации Bendix). Самая ранняя дата, засвидетельствованная для шестнадцатеричного числа в Merriam-Webster Collegiate онлайн - 1954 год, что безопасно помещает его в категорию международного научного словаря (ISV). В ISV принято смешивать греческие и латинские комбинированные формы.свободно. Слово шестидесятеричное (основание 60) сохраняет латинский префикс. Дональд Кнут указал, что этимологически правильный термин - это senidenary (или, возможно, sedenary ), от латинского термина, обозначающего сгруппированные по 16 . (Термины двоичный , тройной и четвертичный происходят от одной и той же латинской конструкции, а этимологически правильные термины для десятичной и восьмеричной арифметики - денарная и восьмеричная , соответственно.) [26] Альфред Б. Тейлор использовал старшую систему.в середине 1800-х работал над альтернативными основами счисления, хотя он отклонил основание 16 из-за «несоразмерного количества цифр». [27] [28] Шварцман отмечает, что ожидаемая форма от обычного латинского выражения будет шестнадцатеричной , но компьютерные хакеры будут склонны сокращать это слово до пола . [29] этимологически собственно греческий термин был бы hexadecadic / ἑξαδεκαδικός / hexadekadikós (хотя в новогреческого , decahexadic / δεκαεξαδικός / dekaexadikos чаще используется).
Использование в китайской культуре [ править ]
Традиционными китайскими единицами измерения были base-16. Например, один дзин (斤) в старой системе равен шестнадцати таэлам . Суаньпань (китайская абака ) может быть использована для выполнения вычислений шестнадцатеричных , таких как сложение и вычитание. [30]
Основная система счисления [ править ]
Как и в случае с двенадцатеричной системой, были случайные попытки продвинуть шестнадцатеричную систему счисления в качестве предпочтительной. Эти попытки часто предлагают конкретное произношение и символы для отдельных цифр. [31] Некоторые предложения унифицируют стандартные меры так, чтобы они были кратны 16. [32] [33] [34]
Примером унифицированных стандартных мер является шестнадцатеричное время , в котором день делится на 16, так что в сутках 16 «шестнадцатеричных часов». [34]
Base16 (кодировка передачи) [ править ]
Base16 (как собственное имя без пробела) также может относиться к двоичной кодировке текста, принадлежащей к тому же семейству, что и Base32 , Base58 и Base64 .
В этом случае данные разбиваются на 4-битные последовательности, и каждое значение (от 0 до 15 включительно) кодируется с использованием 16 символов из набора символов ASCII . Хотя можно использовать любые 16 символов из набора символов ASCII, на практике всегда выбираются цифры ASCII '0' - '9' и буквы 'A' - 'F' (или строчные 'a' - 'f'). для согласования со стандартной записью шестнадцатеричных чисел.
Есть несколько преимуществ кодировки Base16:
- В большинстве языков программирования уже есть возможности для синтаксического анализа шестнадцатеричного кода в кодировке ASCII.
- Будучи ровно половиной байта, 4 бита легче обрабатывать, чем 5 или 6 бит Base32 и Base64 соответственно.
- Символы 0-9 и AF универсальны в шестнадцатеричной системе счисления, поэтому их легко понять с первого взгляда, без необходимости полагаться на таблицу поиска символов.
- Многие архитектуры ЦП имеют специальные инструкции, которые позволяют получить доступ к полубайту (также известному как « полубайт »), что делает его более эффективным с точки зрения аппаратного обеспечения, чем Base32 и Base64.
Основными недостатками кодировки Base16 являются:
- Эффективность использования пространства составляет всего 50%, поскольку каждое 4-битное значение из исходных данных будет закодировано как 8-битный байт. В отличие от кодировок Base32 и Base64 эффективность использования пространства составляет 63% и 75% соответственно.
- Возможная дополнительная сложность из-за необходимости принимать как прописные, так и строчные буквы
Поддержка кодировки Base16 повсеместно используется в современных вычислениях. Это основа стандарта W3C для кодирования процентов URL-адресов , где символ заменяется знаком процента «%» и его формой в кодировке Base16. Большинство современных языков программирования напрямую включают поддержку форматирования и анализа чисел в кодировке Base16.
См. Также [ править ]
- Base32 , Base64 (схемы кодирования контента)
- Шестнадцатеричное время
- Шестнадцатеричное число с плавающей запятой IBM
- Шестнадцатеричный редактор
- Шестнадцатеричный дамп
- Формула Бейли – Борвейна – Плуфа (BBP)
- Hexspeak
Ссылки [ править ]
- ^ Дональд Э. Кнут. TeXbook ( Компьютеры и набор текста , Том A). Ридинг, Массачусетс: Аддисон – Уэсли, 1984. ISBN 0-201-13448-9 . Исходный код книги в TeX Архивированных 2007-09-27 в Wayback Machine (и необходимый набор макросов CTAN.org ) доступенИнтернете на CTAN .
- ^ Строка
"\x1B[0m\x1B[25;1H"
определяет последовательность символов Esc [0 m Esc [2 5; 1 H Nul . Это управляющие последовательности, используемые на терминале ANSI, которые сбрасывают набор символов и цвет, а затем перемещают курсор в строку 25. - ^ «Стандарт Unicode, версия 7» (PDF) . Юникод . Проверено 28 октября 2018 .
- ^ "Шестнадцатеричные цвета сети объяснены" . Архивировано из оригинала на 2006-04-22 . Проверено 11 января 2006 .
- ^ «Кодировка символов ISO-8859-1 (ISO Latin 1)» . www.ic.unicamp.br . Проверено 26 июня 2019 .
- ^ «Модула-2 - Словарь и представление» . Модуль -2 . Проверено 1 ноября 2015 .
- ^ «Введение в типы данных VHDL» . Учебник по FPGA . Проверено 21 августа 2020 .
- ^ "* переменная базы чтения * в Common Lisp" . CLHS .
- ^ "переменная * print-base * в Common Lisp" . CLHS .
- ^ Скоро MSX - Часть 2: Внутри MSX Compute! , выпуск 56, январь 1985 г., стр. 52
- ^ Программы BBC BASIC не полностью переносимы на Microsoft BASIC (без изменений), так как последний принимает восьмеричные значения
&
префикса. (Microsoft BASIC в основном используетвосьмеричныйпрефикс и шестнадцатеричный префикс, но только амперсанд дает интерпретацию по умолчанию как восьмеричный префикс.&O
&H
- ^ Б с д е е г Savard, Джон JG (2018) [2005]. «Компьютерная арифметика» . квадиблок . Первые дни шестнадцатеричной системы. Архивировано 16 июля 2018 года . Проверено 16 июля 2018 .
- ^ «2.1.3 Шестнадцатеричное обозначение». Справочное руководство программиста G15D (PDF) . Лос-Анджелес, Калифорния, США: Bendix Computer , подразделение Bendix Aviation Corporation . п. 4. Архивировано (PDF) из оригинала на 2017-06-01 . Проверено 1 июня 2017 .
Эта база используется, потому что группа из четырех битов может представлять любое из шестнадцати различных чисел (от нуля до пятнадцати). Присваивая символ каждой из этих комбинаций, мы получаем обозначение, называемое шестнадцатеричным (обычно в разговоре шестнадцатеричное, потому что никто не хочет сокращать пол). Символы на шестнадцатеричном языке представляют собой десять десятичных цифр, а на пишущей машинке G-15 - буквы u, v, w, x, y и z. Это произвольная маркировка; другие компьютеры могут использовать другие символы алфавита для этих последних шести цифр.
- ^ Gill, S .; Neagher, RE; Muller, DE; Нэш, JP; Робертсон, Дж. Э .; Шапин, Т .; Уеслер, ди-джей (1956-09-01). Нэш, JP (ред.). «Программирование ILLIAC - Руководство по подготовке задач к решению с помощью цифровых компьютеров Университета Иллинойса» (PDF) . bitsavers.org (Четвертое издание. Пересмотренное и исправленное изд.). Урбана, Иллинойс, США: Лаборатория цифровых компьютеров, Высший колледж, Университет Иллинойса . С. 3–2. Архивировано (PDF) из оригинала 31 мая 2017 года . Проверено 18 декабря 2014 .
- ^ Электронный компьютер ROYAL PRECISION LGP - 30 РУКОВОДСТВО ПО ПРОГРАММИРОВАНИЮ . Порт Честер, Нью-Йорк: Royal McBee Corporation . Апрель 1957. Архивировано 31 мая 2017 года . Проверено 31 мая 2017 .(NB. Эта несколько странная последовательность была взята из следующих шести последовательных цифровых кодов клавиатуры в 6-битном символьном коде LGP-30 .)
- ^ Цифровой компьютер NEC Parametron, тип NEAC-1103 (PDF) . Токио, Япония: Nippon Electric Company Ltd. 1960. Кат. № 3405-С. Архивировано (PDF) из оригинала 31 мая 2017 года . Проверено 31 мая 2017 .
- ^ а б Мартин, Брюс Алан (октябрь 1968 г.). «Письма в редакцию: О двоичной системе счисления». Коммуникации ACM . Связанные университеты Inc. , 11 (10): 658. DOI : 10,1145 / 364096,364107 .
- ^ a b c Магнусон, Роберт А. (январь 1968 г.). «Шестнадцатеричное руководство по произношению». Датамация . Vol. 14 нет. 1. п. 45.
- ^ Бабб, Тим (2015). «Как произносится шестнадцатеричный» . Bzarg . Проверено 1 января 2021 .
- ^ а б Роджерс, SR (2007). «Шестнадцатеричные числовые слова» . Интуитор . Проверено 26 августа 2019 .
- ^ Кларк, Артур; Поль, Фредерик (2008). Последняя теорема . Баллантайн. п. 91 . ISBN 978-0007289981.
- ^ «ISO / IEC 9899: 1999 - Языки программирования - C» . ISO . Iso.org. 2011-12-08 . Проверено 8 апреля 2014 .
- ^ «Обоснование международного стандарта - языки программирования - C» (PDF) . Открытые стандарты . 5.10. Апрель 2003. С. 52, 153–154, 159. Архивировано (PDF) из оригинала 06.06.2016 . Проверено 17 октября 2010 .
- ^ IEEE и Открытая группа (2013) [2001]. "dprintf, fprintf, printf, snprintf, sprintf - распечатать форматированный вывод" . Базовые спецификации Open Group (выпуск 7, IEEE Std 1003.1, 2013 г.). Архивировано 21 июня 2016 года . Проверено 21 июня 2016 .
- ^ "Окончательное руководство по высшей математике по делению в столбик и его вариантам - для целых чисел" . Математическое хранилище . 2019-02-24 . Проверено 26 июня 2019 .
- ^ Кнут, Дональд. (1969). Искусство программирования , Том 2 . ISBN 0-201-03802-1 . (Глава 17.)
- ↑ Альфред Б. Тейлор, Отчет о мерах и весах , Фармацевтическая ассоциация, 8-я ежегодная сессия, Бостон, 15 сентября 1859 г. См. Стр. 33 и 41.
- ^ Альфред Б. Тейлор, "Octonary исчисление и его применение к системе мер и весов", Proc Amer. Фил. Soc. Том XXIV , Филадельфия, 1887 г .; страницы 296-366. См. Страницы 317 и 322.
- ^ Шварцман, С. (1994). The Words of Mathematics: этимологический словарь математических терминов, используемых на английском языке . ISBN 0-88385-511-9 .
- ^ «算盤 Шестнадцатеричное сложение и вычитание на китайских абаках» . totton.idirect.com . Проверено 26 июня 2019 .
- ^ "Предложение по основанию 4 ^ 2 шестнадцатеричных символов" . Хауптмех .
- ^ "Штаб-квартира Intuitor Hex" . Интуитор . Проверено 28 октября 2018 .
- ^ Niemietz, Рикардо Канчо (2003-10-21). «Предложение о добавлении шести шестнадцатеричных цифр (AF) в Unicode» . DKUUG Стандартизация . Проверено 28 октября 2018 .
- ^ a b Нистром, Джон Уильям (1862). Проект новой системы арифметики, веса, меры и монет: предлагается назвать тональной системой с шестнадцатью в основе . Филадельфия: Липпинкотт.