Interested Article - Шестнадцатеричная система счисления

Шестнадцатери́чная система счисления позиционная система счисления по основанию 16.

В качестве цифр этой системы счисления обычно используются цифры от 0 до 9 и латинские буквы от A до F. Буквы A, B, C, D, E, F имеют значения 10 10 , 11 10 , 12 10 , 13 10 , 14 10 , 15 10 соответственно. Пример шестнадцатеричного числа: 1A45F0D (1A45F0D 16 = 27 549 453 10 ).

Применение

Широко используется в низкоуровневом программировании и компьютерной документации, поскольку в современных компьютерах минимальной адресуемой единицей памяти является 8-битный байт , значения которого удобно записывать двумя шестнадцатеричными цифрами, а значение половины байта — полубайта — одной цифрой. Такое использование началось с системы IBM/360 , где вся документация использовала шестнадцатеричную систему, в то время как в документации других компьютерных систем того времени (даже с 8-битными символами, как, например, PDP-11 или БЭСМ-6 ) использовали восьмеричную систему .

В стандарте Юникода номер символа принято записывать в шестнадцатеричном виде, используя не менее 4 цифр (при необходимости — с ведущими нулями ).

Шестнадцатеричный цвет — запись трёх компонентов цвета (R, G и B) в шестнадцатеричном виде. Например, цвет, имеющий шестнадцатеричный номер 00FF00, — ярко-зелёный ( __ ).

Способы записи

В математике

В математике основание системы счисления принято указывать в десятичной системе в нижнем индексе. Например, десятичное число 1443 можно записать как 1443 10 или как 5A3 16 .

В языках программирования

В разных языках программирования для записи шестнадцатеричных чисел используют различный синтаксис:

  • В Ада и VHDL такие числа указывают так: «16#5A3#».
  • В Си и языках схожего синтаксиса, например, в Java , используют префикс «0x». Например, « 5A3 ».
  • В некоторых языках ассемблера используют букву «h», которую ставят после числа. Например, «5A3h». При этом, если число начинается не с десятичной цифры, то для отличия от имён идентификаторов (например, констант ) впереди ставится «0» (ноль) : «0FFh» (255 10 )
  • Другие ассемблеры (AT&T, Motorola), а также Паскаль и некоторые версии Бейсика используют префикс «$». Например, «$5A3».
  • Другие версии Бейсика, например Turbo Basic , используют для указания шестнадцатеричных цифр сочетание «&h» или «&H» перед числом. Например, «&h5A3».
  • В ассемблерах для IBM mainframe (Assembler F, Assembler 2, Assembler H) используется запись X’xx..xx'. Например X’05A3'.
  • Некоторые иные платформы, например ZX Spectrum в своих ассемблерах (MASM, TASM, ALASM, GENS и т. д.) использовали запись #5A3, обычно выровненную до одного или двух байт: #05A3.
  • В Unix-подобных операционных системах (и многих языках программирования, имеющих корни в Unix/linux) непечатные символы при выводе/вводе кодируются как CC , где CC — шестнадцатеричный код символа.

Перевод чисел из одной системы счисления в другую

Перевод чисел из шестнадцатеричной системы в десятичную

Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.

Например, требуется перевести шестнадцатеричное число 3A5 в десятичное. В этом числе 3 шестнадцатеричные цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:

3A5 16 = 3·16 2 +10·16 1 +5·16 0 =
= 3·256+10·16+5·1 = 768+160+5 = 933 10

При переводе чисел следует помнить, что в шестнадцатеричной системе счисления: A=10; B=11; C=12; D=13; E=14; F=15.

Перевод чисел из двоичной системы в шестнадцатеричную и наоборот

Для перевода многозначного двоичного числа в шестнадцатеричную систему нужно разбить его на тетрады справа налево и заменить каждую тетраду соответствующей шестнадцатеричной цифрой.

Для перевода числа из шестнадцатеричной системы в двоичную нужно заменить каждую его цифру на соответствующую тетраду из нижеприведённой таблицы перевода. Например:

010110100011 2 = 0101 1010 0011 = 5A3 16

Таблица перевода чисел

0 hex = 0 dec = 0 oct 0 0 0 0
1 hex = 1 dec = 1 oct 0 0 0 1
2 hex = 2 dec = 2 oct 0 0 1 0
3 hex = 3 dec = 3 oct 0 0 1 1
4 hex = 4 dec = 4 oct 0 1 0 0
5 hex = 5 dec = 5 oct 0 1 0 1
6 hex = 6 dec = 6 oct 0 1 1 0
7 hex = 7 dec = 7 oct 0 1 1 1
8 hex = 8 dec = 10 oct 1 0 0 0
9 hex = 9 dec = 11 oct 1 0 0 1
A hex = 10 dec = 12 oct 1 0 1 0
B hex = 11 dec = 13 oct 1 0 1 1
C hex = 12 dec = 14 oct 1 1 0 0
D hex = 13 dec = 15 oct 1 1 0 1
E hex = 14 dec = 16 oct 1 1 1 0
F hex = 15 dec = 17 oct 1 1 1 1

См. также

Примечания

  1. Сергей Владимирович Зубков. Assembler для DOS, Windows и UNIX . — 3. — Санкт-Петербург : «Питер» , 2004. — С. 16. — 608 с. — ISBN 5-94074-259-9 .

Ссылки

Источник —

Same as Шестнадцатеричная система счисления