Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В математике и вычислительной технике шестнадцатеричная система счисления (также с основанием 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]&#xcode;’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 : или . В некоторых реализациях требуется начальный ноль, когда первый шестнадцатеричный символ цифры не является десятичной цифрой, поэтому вместоFFh05A3H0FFhFFh
  • Другие языки сборки ( 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 году. Эта нотация не стала очень популярной.
Предложение Брюса Алана Мартина о шестнадцатеричной системе счисления [17]
  • Брюс Алан Мартин из Брукхейвенской национальной лаборатории счел выбор 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 ) показана справа.

Знаки [ править ]

В шестнадцатеричной системе отрицательные числа могут быть выражены так же, как и в десятичной: −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 с F 16 за один шаг становится простым: см. Таблицу в письменном виде . Преимущество использования шестнадцатеричного числа, а не десятичного, быстро увеличивается с размером числа. Когда число становится большим, преобразование в десятичное очень утомительно. Однако при отображении в шестнадцатеричный формат двоичную строку тривиально рассматривать как группы из 4 цифр и отображать каждую в одну шестнадцатеричную цифру.

В этом примере показано преобразование двоичного числа в десятичное, сопоставление каждой цифры с десятичным значением и сложение результатов.

Сравните это с преобразованием в шестнадцатеричное, где каждую группу из четырех цифр можно рассматривать независимо и преобразовывать напрямую:

Преобразование из шестнадцатеричного в двоичное также происходит напрямую.

Другие простые преобразования [ править ]

Хотя четвертичный (основание 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. я ← 1
  2. h i ← d мод 16
  3. d ← (d - h i ) / 16
  4. Если 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 .

Иррациональные числа [ править ]

В таблице ниже приведены расширения некоторых распространенных иррациональных чисел в десятичной и шестнадцатеричной системе счисления.

Полномочия [ править ]

Степень двойки имеет очень простое шестнадцатеричное разложение. Первые шестнадцать степеней двойки показаны ниже.

Культурный [ править ]

Этимология [ править ]

Слово шестнадцатеричное состоят из гекса- , происходящий от греческой ЕЕ (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

Ссылки [ править ]

  1. ^ Дональд Э. Кнут. TeXbook ( Компьютеры и набор текста , Том A). Ридинг, Массачусетс: Аддисон – Уэсли, 1984. ISBN  0-201-13448-9 . Исходный код книги в TeX Архивированных 2007-09-27 в Wayback Machine (и необходимый набор макросов CTAN.org ) доступенИнтернете на CTAN .
  2. ^ Строка"\x1B[0m\x1B[25;1H"определяет последовательность символов Esc [0 m Esc [2 5; 1 H Nul . Это управляющие последовательности, используемые на терминале ANSI, которые сбрасывают набор символов и цвет, а затем перемещают курсор в строку 25.
  3. ^ «Стандарт Unicode, версия 7» (PDF) . Юникод . Проверено 28 октября 2018 .
  4. ^ "Шестнадцатеричные цвета сети объяснены" . Архивировано из оригинала на 2006-04-22 . Проверено 11 января 2006 .
  5. ^ «Кодировка символов ISO-8859-1 (ISO Latin 1)» . www.ic.unicamp.br . Проверено 26 июня 2019 .
  6. ^ «Модула-2 - Словарь и представление» . Модуль -2 . Проверено 1 ноября 2015 .
  7. ^ «Введение в типы данных VHDL» . Учебник по FPGA . Проверено 21 августа 2020 .
  8. ^ "* переменная базы чтения * в Common Lisp" . CLHS .
  9. ^ "переменная * print-base * в Common Lisp" . CLHS .
  10. ^ Скоро MSX - Часть 2: Внутри MSX Compute! , выпуск 56, январь 1985 г., стр. 52
  11. ^ Программы BBC BASIC не полностью переносимы на Microsoft BASIC (без изменений), так как последний принимает восьмеричные значения&префикса. (Microsoft BASIC в основном используетвосьмеричныйпрефикс и шестнадцатеричный префикс, но только амперсанд дает интерпретацию по умолчанию как восьмеричный префикс.&O&H
  12. ^ Б с д е е г Savard, Джон JG (2018) [2005]. «Компьютерная арифметика» . квадиблок . Первые дни шестнадцатеричной системы. Архивировано 16 июля 2018 года . Проверено 16 июля 2018 .
  13. ^ «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. Это произвольная маркировка; другие компьютеры могут использовать другие символы алфавита для этих последних шести цифр.
  14. ^ Gill, S .; Neagher, RE; Muller, DE; Нэш, JP; Робертсон, Дж. Э .; Шапин, Т .; Уеслер, ди-джей (1956-09-01). Нэш, JP (ред.). «Программирование ILLIAC - Руководство по подготовке задач к решению с помощью цифровых компьютеров Университета Иллинойса» (PDF) . bitsavers.org (Четвертое издание. Пересмотренное и исправленное изд.). Урбана, Иллинойс, США: Лаборатория цифровых компьютеров, Высший колледж, Университет Иллинойса . С. 3–2. Архивировано (PDF) из оригинала 31 мая 2017 года . Проверено 18 декабря 2014 .
  15. ^ Электронный компьютер ROYAL PRECISION LGP - 30 РУКОВОДСТВО ПО ПРОГРАММИРОВАНИЮ . Порт Честер, Нью-Йорк: Royal McBee Corporation . Апрель 1957. Архивировано 31 мая 2017 года . Проверено 31 мая 2017 .(NB. Эта несколько странная последовательность была взята из следующих шести последовательных цифровых кодов клавиатуры в 6-битном символьном коде LGP-30 .)
  16. ^ Цифровой компьютер NEC Parametron, тип NEAC-1103 (PDF) . Токио, Япония: Nippon Electric Company Ltd. 1960. Кат. № 3405-С. Архивировано (PDF) из оригинала 31 мая 2017 года . Проверено 31 мая 2017 .
  17. ^ а б Мартин, Брюс Алан (октябрь 1968 г.). «Письма в редакцию: О двоичной системе счисления». Коммуникации ACM . Связанные университеты Inc. , 11 (10): 658. DOI : 10,1145 / 364096,364107 .
  18. ^ a b c Магнусон, Роберт А. (январь 1968 г.). «Шестнадцатеричное руководство по произношению». Датамация . Vol. 14 нет. 1. п. 45.
  19. ^ Бабб, Тим (2015). «Как произносится шестнадцатеричный» . Bzarg . Проверено 1 января 2021 .
  20. ^ а б Роджерс, SR (2007). «Шестнадцатеричные числовые слова» . Интуитор . Проверено 26 августа 2019 .
  21. ^ Кларк, Артур; Поль, Фредерик (2008). Последняя теорема . Баллантайн. п. 91 . ISBN 978-0007289981.
  22. ^ «ISO / IEC 9899: 1999 - Языки программирования - C» . ISO . Iso.org. 2011-12-08 . Проверено 8 апреля 2014 .
  23. ^ «Обоснование международного стандарта - языки программирования - C» (PDF) . Открытые стандарты . 5.10. Апрель 2003. С. 52, 153–154, 159. Архивировано (PDF) из оригинала 06.06.2016 . Проверено 17 октября 2010 .
  24. ^ IEEE и Открытая группа (2013) [2001]. "dprintf, fprintf, printf, snprintf, sprintf - распечатать форматированный вывод" . Базовые спецификации Open Group (выпуск 7, IEEE Std 1003.1, 2013 г.). Архивировано 21 июня 2016 года . Проверено 21 июня 2016 .
  25. ^ "Окончательное руководство по высшей математике по делению в столбик и его вариантам - для целых чисел" . Математическое хранилище . 2019-02-24 . Проверено 26 июня 2019 .
  26. ^ Кнут, Дональд. (1969). Искусство программирования , Том 2 . ISBN 0-201-03802-1 . (Глава 17.) 
  27. Альфред Б. Тейлор, Отчет о мерах и весах , Фармацевтическая ассоциация, 8-я ежегодная сессия, Бостон, 15 сентября 1859 г. См. Стр. 33 и 41.
  28. ^ Альфред Б. Тейлор, "Octonary исчисление и его применение к системе мер и весов", Proc Amer. Фил. Soc. Том XXIV , Филадельфия, 1887 г .; страницы 296-366. См. Страницы 317 и 322.
  29. ^ Шварцман, С. (1994). The Words of Mathematics: этимологический словарь математических терминов, используемых на английском языке . ISBN 0-88385-511-9 . 
  30. ^ «算盤 Шестнадцатеричное сложение и вычитание на китайских абаках» . totton.idirect.com . Проверено 26 июня 2019 .
  31. ^ "Предложение по основанию 4 ^ 2 шестнадцатеричных символов" . Хауптмех .
  32. ^ "Штаб-квартира Intuitor Hex" . Интуитор . Проверено 28 октября 2018 .
  33. ^ Niemietz, Рикардо Канчо (2003-10-21). «Предложение о добавлении шести шестнадцатеричных цифр (AF) в Unicode» . DKUUG Стандартизация . Проверено 28 октября 2018 .
  34. ^ a b Нистром, Джон Уильям (1862). Проект новой системы арифметики, веса, меры и монет: предлагается назвать тональной системой с шестнадцатью в основе . Филадельфия: Липпинкотт.