Шестнадцатери́чная систе́ма счисле́ния — позиционная система счисления по основанию 16.
В качестве цифр этой системы счисления обычно используются цифры от 0 до 9 и латинские буквы от A до F. Буквы A, B, C, D, E, F имеют значения 1010, 1110, 1210, 1310, 1410, 1510 соответственно. Пример шестнадцатеричного числа: 1A45F0D (1A45F0D16 = 27 549 45310).
Применение Широко используется в низкоуровневом программировании и компьютерной документации, поскольку в современных компьютерах минимальной адресуемой единицей памяти является 8-битный байт, значения которого удобно записывать двумя шестнадцатеричными цифрами, а значение половины байта — полубайта — одной цифрой. Такое использование началось с системы IBM/360, где вся документация использовала шестнадцатеричную систему, в то время как в документации других компьютерных систем того времени (даже с 8-битными символами, как, например, PDP-11 или БЭСМ-6) использовали восьмеричную систему.
В стандарте Юникода номер символа принято записывать в шестнадцатеричном виде, используя не менее 4 цифр (при необходимости — с ведущими нулями).
Шестнадцатеричный цвет — запись трёх компонентов цвета (R, G и B) в шестнадцатеричном виде. Например, цвет, имеющий шестнадцатеричный номер 00FF00, — ярко-зелёный (__).
Способы записи
В математике В математике основание системы счисления принято указывать в десятичной системе в нижнем индексе. Например, десятичное число 1443 можно записать как 144310 или как 5A316.
В языках программирования В разных языках программирования для записи шестнадцатеричных чисел используют различный синтаксис: В Ада и VHDL такие числа указывают так: «16#5A3#». В Си и языках схожего синтаксиса (например, в Java), а также в ряде языков ассемблера используют префикс «0x», позволяющий однозначно отличить шестнадцатеричное число от буквенно-цифрового идентификатора. Например, «». В некоторых языках ассемблера (включая синтаксис x86, в котором также возможен и предыдущий способ записи) используют букву «h», которую ставят после числа. Например, «5A3h». При этом, если число начинается не с десятичной цифры, то для отличия от имён идентификаторов (например, констант) впереди ставится «0» (ноль): «0FFh» (25510) Другие ассемблеры (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 — шестнадцатеричный код символа.
Перевод чисел из одной системы счисления в другую
Перевод чисел из шестнадцатеричной системы в десятичную Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число 3A5 в десятичное. В этом числе 3 шестнадцатеричные цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
3A516 = 3·162+10·161+5·160= = 3·256+10·16+5·1 = 768+160+5 = 93310
При переводе чисел следует помнить, что в шестнадцатеричной системе счисления: A=10; B=11; C=12; D=13; E=14; F=15.
Перевод чисел из двоичной системы в шестнадцатеричную и наоборот Для перевода многозначного двоичного числа в шестнадцатеричную систему нужно разбить его на тетрады справа налево и заменить каждую тетраду соответствующей шестнадцатеричной цифрой.
Для перевода числа из шестнадцатеричной системы в двоичную нужно заменить каждую его цифру на соответствующую тетраду из нижеприведённой таблицы перевода. Например: 0101101000112 = 0101 1010 0011 = 5A316
Таблица перевода чисел 0hex = 0dec = 0oct 0000 1hex = 1dec = 1oct 0001 2hex = 2dec = 2oct 0010 3hex = 3dec = 3oct 0011 4hex = 4dec = 4oct 0100 5hex = 5dec = 5oct 0101 6hex = 6dec = 6oct 0110 7hex = 7dec = 7oct 0111 8hex = 8dec = 10oct 1000 9hex = 9dec = 11oct 1001 Ahex = 10dec = 12oct 1010 Bhex = 11dec = 13oct 1011 Chex = 12dec = 14oct 1100 Dhex = 13dec = 15oct 1101 Ehex = 14dec = 16oct 1110 Fhex = 15dec = 17oct 1111
См. также Двоичные приставки Шестнадцатеричный редактор
Примечания
Ссылки Шестнадцатеричные числа и операции с ними
Категория:Системы счисления