какие символы есть в шестнадцатеричной системе счисления
Шестнадцатиричная система исчисления
Шестнадцатеричная система счисления (шестнадцатеричные числа) — позиционная система счисления по целочисленному основанию 16. Обычно в качестве шестнадцатеричных цифр используются десятичные цифры от 0 до 9 и латинские буквы от A до F для обозначения цифр от 10 до 15.
Содержание
Применение
Широко используется в низкоуровневом программировании и вообще в компьютерной документации, поскольку в современных компьютерах минимальной единицей памяти является 8-битный байт, значения которого удобно записывать двумя шестнадцатеричными цифрами. Такое использование началось с системы IBM/360, где вся документация использовала шестнадцатеричную систему, в то время как в документации других компьютерных систем того времени (даже с 8-битными символами, как, например, БЭСМ-6) использовали восьмеричную систему.
В стандарте Юникода номер символа принято записывать в шестнадцатеричном виде, используя не менее 4 цифр (при необходимости — с ведущими нулями).
Способы записи
В математике
В математике систему счисления принято писать в подстрочном знаке. Например, десятичное число 1443 можно записать как 144310 или как 5A316.
В языках программирования
В разных языках программирования для записи шестнадцатеричных чисел используют различный синтаксис:
Перевод чисел из одной системы счисления в другую
Перевод чисел из шестнадцатеричной системы в десятичную
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
Перевод чисел из двоичной системы в шестнадцатеричную
Для перевода многозначного двоичного числа в шестнадцатеричную систему нужно разбить его на тетрады справа налево и заменить каждую тетраду соответствующей шестнадцатеричной цифрой.
От 0 до F: шестнадцатеричные числа
Шестнадцатеричные данные. Это информация внутри вашего компьютера. Но что на самом деле такое шестнадцатеричное число? Что означают странные и непривычно выглядящие шестнадцатеричные числа? Как появилось шестнадцатеричное число? Узнайте больше о шестнадцатеричном формате сегодня.
Что такое шестнадцатеричный?
Шестнадцатеричная система счисления использует шестнадцать символов (от 0 до 9 и от A до F) для образования и представления любого числа. Шестнадцатеричная система используется в компьютерах и калькуляторах. Слово «шестнадцатеричный» часто сокращается до hex, а hex происходит от слова hexagon, то есть шестиугольник, шесть. На английском языке слово «шестнадцатеричный» записывается как hexadecimal и вы можете сразу увидеть логику названия hexa..decimal, поскольку decimal означает (10), а hexa означает 6 (A-F, 6 символов).
Компьютеры часто используют шестнадцатеричные числа в своих внутренних вычислительных системах. Существует прямая связь между двоичными и восьмеричными числами и шестнадцатеричными числами. Чтобы узнать больше о шестнадцатеричной системе счисления с 16 основанием (16 основных элементов, 16 основных чисел), нам нужно немного отступить и сначала изучить двоичную и восьмеричную системы. Если вы раньше не слышали эти термины, не волнуйтесь, это далеко не так сложно, как кажется.
Что такое двоичный?
Двоичные числа, особенно двоичная система счисления, является одной из самых, если не самых простых систем счисления на планете. В двоичном формате есть только два возможных числа (отсюда и термин двоичный, т.е. состоящий из двух вещей), и это ноль (0) и единица (1). Хотя мы используем ноль и единицу для представления двух возможных чисел в этой системе, пожалуйста, поймите, что это всего лишь выбор — точно так же, как я бы использовал буквы латинского алфавита A-Z для представления слов на английском языке или китайских символов для представления слов на китайском языке.
Так как же считать в двоичной системе счисления с двумя основными числами? Все мы знаем, как считать в десятичной системе счисления (десятичная система счисления, которую мы используем каждый день для всех наших выражений количества и т. д.), 0… 1… 2… 3…, но как мы это делаем, если мы даже не можем выйти за рамки 1 к 2? Что произойдёт, когда мы дойдём до 9 и нам нужно будет найти следующее число? Мы добавляем единицу впереди (первая цифра в 10) и сбрасываем нашу вторичную позицию на 0. Мы продолжаем делать это, чтобы считать до 99, а затем делаем то же самое, хотя на этот раз мы сбрасываем две позиции.
Мы можем использовать тот же метод в нашем 2-базовом двоичном вычислении, и это именно то, что мы делаем и как мы считаем. Начнём: 0… 1… 10… 11… 100… 101… 110… 111… 1000…. Не сложно, правда? Если вы ещё не знали, как считать в двоичном формате, поздравляем, теперь вы знаете, как это сделать! В наши дни этому навыку обучают в средней школе. Перейдём к восьмеричному.
Что такое восьмеричный?
До сих пор мы обнаружили, что десятичное число также может быть обозначена как число с основанием 10, потому что оно имеет 10 различных символов для выражения чисел (от 0 до 9), а в число с основанием 2 только ноль и один. Теперь мы представим восьмеричную, ещё одну компьютерно-ориентированную систему счисления, которая имеет 8 возможных символов. Как вы уже догадались, от нуля (0) до семи (7). Вы можете начать понимать, почему существуют такие системы счисления: добро пожаловать в степень двойки: 2 (двоичная) > 4 (полбайта) > 8 (восьмеричная, один байт) > 16 (шестнадцатеричная).
Так что же такое байт? Байт состоит из восьми битов (обычно визуально отображается как 2 набора по 4 бита, хотя для компьютера это просто 8 бит в строке), образующих один байт. Например, 0110 1100 — это действительный байт, состоящий из 8 бит. Это число можно преобразовать в восьмеричное (154), шестнадцатеричное (6C) и десятичное (108). Обратите внимание на то, что чем выше номер основания числа, тем короче его запись, например, 6C в шестнадцатеричной системе записывается как 154 в восьмеричной системе счисления. В двоичной системе счисления запись этого числа будет ещё длиннее.
Байт часто используется для хранения простых буквенно-цифровых символов. Например, буква «A» записывается в двоичном формате как 0100 0001. Обратите внимание, что максимальное значение в байте (например, 1111 1111) равно 255, и, таким образом, существует только 256 возможных комбинаций (+1, поскольку 0 также является возможной опцией) — это все возможные комбинации, которые можно сделать с помощью одного байта. Таким образом, наш ограниченный диапазон от A до Z, даже включая цифры 0-9 и строчные буквы a-z, все вместе легко умещается в один байт, и мы даже можем представить некоторые другие символы, такие как «@» и «!».
Однако, когда речь идёт, например, о китайском с его множеством разных символов, нам может потребоваться два или более байта для хранения наших отдельных символов, то есть многобайтовые символы.
Возвращаясь к восьмеричной системе счисления, как считать восьмеричные числа? Как вы уже догадались, всё происходит как в десятичной и двоичной системах счисления: тот же метод, который мы уже видели, после каждого раунда дописывается ещё одна цифра, а предыдущие цифры сбрасываются на ноль. Только нужно помнить о том, что в восьмеричной системе счисления максимальной (последней) цифрой является 7. Посчитаем вместе: 0… 1… 2… 3… 4… 5… 6… 7… 10… 11… — выглядит немного странно, не так ли? Это потому, что наш разум так настроен думать о 10, ну, как о «10». Но 10 в восьмеричной системе счисления равно 8 в десятичной. Сбивает с толку? Для нас, простых людей, да, восьмеричная система счисления с основанием числа 8 может сбивать с толку. Для компьютера это не проблема.
Подсчёт в шестнадцатеричной системе счисления
Это возвращает нас к счёту в нашей системе счисления с основанием 16: шестнадцатеричной. Теперь мы знаем шаги, которым нужно следовать, и можем сосчитать (пропустим подсчёт от нуля до девяти): 0… пропуск до… 9… A… B… C… D… E… F… 10… 11…. Теперь мы понимаем, что 10 в шестнадцатеричной системе счисления, как и в восьмеричной, имеет другое значение, чем то, что мы можем подумать (исходя из нашей привычки пользоваться десятичной системой счисления), поскольку мы ведём счёт в шестнадцатеричной системе счисления, которая соответствует основанию равному 16, а не десятичной системе счисления, в которой основание равно 10. Число 10 в шестнадцатеричном формате на самом деле равно 16 в десятичном!
Примечательно, что шестнадцатеричный формат, именно потому, что он состоит из 16 оснований, позволяет нам хранить весь байт в двух символах! Мы не можем сделать это с десятичным числом, поскольку двоичное значение 1111 1111 (т.е. 1111111 для компьютера) равно 255 в десятичном формате. Однако в шестнадцатеричном формате оно может быть представлено как FF, который в десятичном виде равен 255. Также обратите внимание, что полбайта, 4 бита, можно сохранить в одном шестнадцатеричном символе.
Подведение итогов
Мы надеемся, что вам понравилось это введение в шестнадцатеричную, нашу 16-символьную или 16-базовую числовую систему, а также в двоичную систему счисления с двумя базовыми числами и восьмеричную систему счисления с основанием числа 8. Мы также узнали, как мы ведём ежедневный счёт в десятичной системе счисления, в нашей очень знакомой десятичной системе счисления используются числа от 0 до 9.
Мы также увидели, что символы, которые мы используем для представления двоичных, восьмеричных, шестнадцатеричных и даже десятичных значений, — это всего лишь символы, которые человечество выбрало для представления этих различных систем счисления. Мы могли бы легко выбрать другие представления для других числовых систем, но повторное использование тех же чисел кажется знакомым и имеет некоторый смысл, особенно в случае двоичной системы «напряжение» и «отсутствие напряжение», представлены нулём и единицей.
Основы систем счисления
Изучая кодировки, я понял, что недостаточно хорошо понимаю системы счислений. Тем не менее, часто использовал 2-, 8-, 10-, 16-ю системы, переводил одну в другую, но делалось все на “автомате”. Прочитав множество публикаций, я был удивлен отсутствием единой, написанной простым языком, статьи по столь базовому материалу. Именно поэтому решил написать свою, в которой постарался доступно и по порядку изложить основы систем счисления.
Введение
Система счисления — это способ записи (представления) чисел.
Что под этим подразумевается? Например, вы видите перед собой несколько деревьев. Ваша задача — их посчитать. Для этого можно — загибать пальцы, делать зарубки на камне (одно дерево — один палец\зарубка) или сопоставить 10 деревьям какой-нибудь предмет, например, камень, а единичному экземпляру — палочку и выкладывать их на землю по мере подсчета. В первом случае число представляется, как строка из загнутых пальцев или зарубок, во втором — композиция камней и палочек, где слева — камни, а справа — палочки
Системы счисления подразделяются на позиционные и непозиционные, а позиционные, в свою очередь, — на однородные и смешанные.
Непозиционная — самая древняя, в ней каждая цифра числа имеет величину, не зависящую от её позиции (разряда). То есть, если у вас 5 черточек — то число тоже равно 5, поскольку каждой черточке, независимо от её места в строке, соответствует всего 1 один предмет.
Позиционная система — значение каждой цифры зависит от её позиции (разряда) в числе. Например, привычная для нас 10-я система счисления — позиционная. Рассмотрим число 453. Цифра 4 обозначает количество сотен и соответствует числу 400, 5 — кол-во десяток и аналогично значению 50, а 3 — единиц и значению 3. Как видим — чем больше разряд — тем значение выше. Итоговое число можно представить, как сумму 400+50+3=453.
Однородная система — для всех разрядов (позиций) числа набор допустимых символов (цифр) одинаков. В качестве примера возьмем упоминавшуюся ранее 10-ю систему. При записи числа в однородной 10-й системе вы можете использовать в каждом разряде исключительно одну цифру от 0 до 9, таким образом, допускается число 450 (1-й разряд — 0, 2-й — 5, 3-й — 4), а 4F5 — нет, поскольку символ F не входит в набор цифр от 0 до 9.
Смешанная система — в каждом разряде (позиции) числа набор допустимых символов (цифр) может отличаться от наборов других разрядов. Яркий пример — система измерения времени. В разряде секунд и минут возможно 60 различных символов (от «00» до «59»), в разряде часов – 24 разных символа (от «00» до «23»), в разряде суток – 365 и т. д.
Непозиционные системы
Как только люди научились считать — возникла потребность записи чисел. В начале все было просто — зарубка или черточка на какой-нибудь поверхности соответствовала одному предмету, например, одному фрукту. Так появилась первая система счисления — единичная.
Единичная система счисления
Число в этой системе счисления представляет собой строку из черточек (палочек), количество которых равно значению данного числа. Таким образом, урожай из 100 фиников будет равен числу, состоящему из 100 черточек.
Но эта система обладает явными неудобствами — чем больше число — тем длиннее строка из палочек. Помимо этого, можно легко ошибиться при записи числа, добавив случайно лишнюю палочку или, наоборот, не дописав.
Для удобства, люди стали группировать палочки по 3, 5, 10 штук. При этом, каждой группе соответствовал определенный знак или предмет. Изначально для подсчета использовались пальцы рук, поэтому первые знаки появились для групп из 5 и 10 штук (единиц). Все это позволило создать более удобные системы записи чисел.
Древнеегипетская десятичная система
Почему она называется десятичной? Как писалось выше — люди стали группировать символы. В Египте — выбрали группировку по 10, оставив без изменений цифру “1”. В данном случае, число 10 называется основанием десятичной системы счисления, а каждый символ — представление числа 10 в какой-то степени.
Числа в древнеегипетской системе счисления записывались, как комбинация этих
символов, каждый из которых повторялся не более девяти раз. Итоговое значение равнялось сумме элементов числа. Стоит отметить, что такой способ получения значения свойственен каждой непозиционной системе счисления. Примером может служить число 345:
Вавилонская шестидесятеричная система
В отличии от египетской, в вавилонской системе использовалось всего 2 символа: “прямой” клин — для обозначения единиц и “лежачий” — для десятков. Чтобы определить значение числа необходимо изображение числа разбить на разряды справа налево. Новый разряд начинается с появления прямого клина после лежачего. В качестве примера возьмем число 32:
Число 60 и все его степени так же обозначаются прямым клином, что и “1”. Поэтому вавилонская система счисления получила название шестидесятеричной.
Все числа от 1 до 59 вавилоняне записывали в десятичной непозиционной системе, а большие значения — в позиционной с основанием 60. Число 92:
Запись числа была неоднозначной, поскольку не существовало цифры обозначающей ноль. Представление числа 92 могло обозначать не только 92=60+32, но и, например, 3632=3600+32. Для определения абсолютного значения числа был введен специальный символ для обозначения пропущенного шестидесятеричного разряда, что соответствует появлению цифры 0 в записи десятичного числа:
Теперь число 3632 следует записывать, как:
Шестидесятеричная вавилонская система — первая система счисления, частично основанная на позиционном принципе. Данная система счисления используется и сегодня, например, при определении времени — час состоит из 60 минут, а минута из 60 секунд.
Римская система
Римская система не сильно отличается от египетской. В ней для обозначения чисел 1, 5, 10, 50, 100, 500 и 1000 используются заглавные латинские буквы I, V, X, L, C, D и M соответственно. Число в римской системе счисления — это набор стоящих подряд цифр.
Позиционные системы счисления
Как упоминалось выше — первые предпосылки к появлению позиционной системы возникли в древнем Вавилоне. В Индии система приняла форму позиционной десятичной нумерации с применением нуля, а у индусов эту систему чисел заимствовали арабы, от которых её переняли европейцы. По каким-то причинам, в Европе за этой системой закрепилось название “арабская”.
Десятичная система счисления
Это одна из самых распространенных систем счисления. Именно её мы используем, когда называем цену товара и произносим номер автобуса. В каждом разряде (позиции) может использоваться только одна цифра из диапазона от 0 до 9. Основанием системы является число 10.
Для примера возьмем число 503. Если бы это число было записано в непозиционной системе, то его значение равнялось 5+0+3 = 8. Но у нас — позиционная система и значит каждую цифру числа необходимо умножить на основание системы, в данном случае число “10”, возведенное в степень, равную номеру разряда. Получается, значение равно 5*10 2 + 0*10 1 + 3*10 0 = 500+0+3 = 503. Чтобы избежать путаницы при одновременной работе с несколькими системами счисления основание указывается в качестве нижнего индекса. Таким образом, 503 = 50310.
Помимо десятичной системы, отдельного внимания заслуживают 2-, 8-, 16-ая системы.
Двоичная система счисления
Эта система, в основном, используется в вычислительной технике. Почему не стали использовать привычную нам 10-ю? Первую вычислительную машину создал Блез Паскаль, использовавший в ней десятичную систему, которая оказалась неудобной в современных электронных машинах, поскольку требовалось производство устройств, способных работать в 10 состояниях, что увеличивало их цену и итоговые размеры машины. Этих недостатков лишены элементы, работающие в 2-ой системе. Тем не менее, рассматриваемая система была создана за долго до изобретения вычислительных машин и уходит “корнями” в цивилизацию Инков, где использовались кипу — сложные верёвочные сплетения и узелки.
Двоичная позиционная система счисления имеет основание 2 и использует для записи числа 2 символа (цифры): 0 и 1. В каждом разряде допустима только одна цифра — либо 0, либо 1.
Примером может служить число 101. Оно аналогично числу 5 в десятичной системе счисления. Для того, чтобы перевести из 2-й в 10-ю необходимо умножить каждую цифру двоичного числа на основание “2”, возведенное в степень, равную разряду. Таким образом, число 1012 = 1*2 2 + 0*2 1 + 1*2 0 = 4+0+1 = 510.
Хорошо, для машин 2-я система счисления удобнее, но мы ведь часто видим, используем на компьютере числа в 10-й системе. Как же тогда машина определяет какую цифру вводит пользователь? Как переводит число из одной системы в другую, ведь в её распоряжении всего 2 символа — 0 и 1?
Чтобы компьютер мог работать с двоичными числами (кодами), необходимо чтобы они где-то хранились. Для хранения каждой отдельной цифры применяется триггер, представляющий собой электронную схему. Он может находится в 2-х состояниях, одно из которых соответствует нулю, другое — единице. Для запоминания отдельного числа используется регистр — группа триггеров, число которых соответствует количеству разрядов в двоичном числе. А совокупность регистров — это оперативная память. Число, содержащееся в регистре — машинное слово. Арифметические и логические операции со словами осуществляет арифметико-логическое устройство (АЛУ). Для упрощения доступа к регистрам их нумеруют. Номер называется адресом регистра. Например, если необходимо сложить 2 числа — достаточно указать номера ячеек (регистров), в которых они находятся, а не сами числа. Адреса записываются в 8- и 16-ричной системах (о них будет рассказано ниже), поскольку переход от них к двоичной системе и обратно осуществляется достаточно просто. Для перевода из 2-й в 8-ю число необходимо разбить на группы по 3 разряда справа налево, а для перехода к 16-ой — по 4. Если в крайней левой группе цифр не достает разрядов, то они заполняются слева нулями, которые называются ведущими. В качестве примера возьмем число 1011002. В восьмеричной — это 101 100 = 548, а в шестнадцатеричной — 0010 1100 = 2С16. Отлично, но почему на экране мы видим десятичные числа и буквы? При нажатии на клавишу в компьютер передаётся определённая последовательность электрических импульсов, причём каждому символу соответствует своя последовательность электрических импульсов (нулей и единиц). Программа драйвер клавиатуры и экрана обращается к кодовой таблице символов (например, Unicode, позволяющая закодировать 65536 символов), определяет какому символу соответствует полученный код и отображает его на экране. Таким образом, тексты и числа хранятся в памяти компьютера в двоичном коде, а программным способом преобразуются в изображения на экране.
Восьмеричная система счисления
8-я система счисления, как и двоичная, часто применяется в цифровой технике. Имеет основание 8 и использует для записи числа цифры от 0 до 7.
Шестнадцатеричная система счисления
Шестнадцатеричная система широко используется в современных компьютерах, например при помощи неё указывается цвет: #FFFFFF — белый цвет. Рассматриваемая система имеет основание 16 и использует для записи числа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B. C, D, E, F, где буквы равны 10, 11, 12, 13, 14, 15 соответственно.
Помимо рассмотренных позиционных систем счисления, существуют и другие, например:
1) Троичная
2) Четверичная
3) Двенадцатеричная
Позиционные системы подразделяются на однородные и смешанные.
Однородные позиционные системы счисления
Определение, данное в начале статьи, достаточно полно описывает однородные системы, поэтому уточнение — излишне.
Смешанные системы счисления
К уже приведенному определению можно добавить теорему: “если P=Q n (P,Q,n – целые положительные числа, при этом P и Q — основания), то запись любого числа в смешанной (P-Q)-ой системе счисления тождественно совпадает с записью этого же числа в системе счисления с основанием Q.”
Смешанными системами счисления также являются, например:
1) Факториальная
2) Фибоначчиева
Перевод из одной системы счисления в другую
Иногда требуется преобразовать число из одной системы счисления в другую, поэтому рассмотрим способы перевода между различными системами.
Преобразование в десятичную систему счисления
Пример: 1012 = 1*2 2 + 0*2 1 + 1*2 0 = 4+0+1 = 510
Преобразование из десятичной системы счисления в другие
Записав все остатки снизу вверх, получаем итоговое число 17. Следовательно, 1510 = 178.
Преобразование из двоичной в восьмеричную и шестнадцатеричную системы
В качестве примера возьмем число 10012: 10012 = 001 001 = (0*2 2 + 0*2 1 + 1*2 0 ) (0*2 2 + 0*2 1 + 1*2 0 ) = (0+0+1) (0+0+1) = 118
Для перевода в шестнадцатеричную — разбиваем двоичное число на группы по 4 цифры справа налево, затем — аналогично преобразованию из 2-й в 8-ю.
Преобразование из восьмеричной и шестнадцатеричной систем в двоичную
Перевод из восьмеричной в двоичную — преобразуем каждый разряд восьмеричного числа в двоичное 3-х разрядное число делением на 2 (более подробно о делении см. выше пункт “Преобразование из десятичной системы счисления в другие”), недостающие крайние разряды заполним ведущими нулями.
Для примера рассмотрим число 458: 45 = (100) (101) = 1001012
Перевод из 16-ой в 2-ю — преобразуем каждый разряд шестнадцатеричного числа в двоичное 4-х разрядное число делением на 2, недостающие крайние разряды заполняем ведущими нулями.
Преобразование дробной части любой системы счисления в десятичную
Преобразование осуществляется также, как и для целых частей, за исключением того, что цифры числа умножаются на основание в степени “-n”, где n начинается от 1.
Преобразование дробной части двоичной системы в 8- и 16-ую
Перевод дробной части осуществляется также, как и для целых частей числа, за тем лишь исключением, что разбивка на группы по 3 и 4 цифры идёт вправо от десятичной запятой, недостающие разряды дополняются нулями справа.
Пример: 1001,012 = 001 001, 010 = (0*2 2 + 0*2 1 + 1*2 0 ) (0*2 2 + 0*2 1 + 1*2 0 ), (0*2 2 + 1*2 1 + 0*2 0 ) = (0+0+1) (0+0+1), (0+2+0) = 11,28
Преобразование дробной части десятичной системы в любую другую
Для перевода дробной части числа в другие системы счисления нужно обратить целую часть в ноль и начать умножение получившегося числа на основание системы, в которую нужно перевести. Если в результате умножения будут снова появляться целые части, их нужно повторно обращать в ноль, предварительно запомнив (записав) значение получившейся целой части. Операция заканчивается, когда дробная часть полностью обратится в нуль.
Для примера переведем 10,62510 в двоичную систему:
0,625*2 = 1,25
0,250*2 = 0,5
0,5*2 = 1,0
Записав все остатки сверху вниз, получаем 10,62510 = (1010), (101) = 1010,1012