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

Обновлено: 06.07.2024

Как считать в шестнадцатеричной системе счисления

Система счисления, которую мы используем в повседневной жизни, называется десятичной или системой base-10 и использует 10 символов от 0 до 9 для представления значения.

Где и почему используется шестнадцатеричный код?

Большинство кодов ошибок и других значений, используемых внутри компьютера, представлены в шестнадцатеричном формате. Например, коды ошибок, называемые кодами СТОП, которые отображаются на синем экране смерти, всегда имеют шестнадцатеричный формат.

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

Например, шестнадцатеричное значение F4240 эквивалентно 1 000 000 в десятичном формате и 1111 0100 0010 0100 0000 в двоичном формате.

Другое шестнадцатеричное место используется как HTML цветовой код для выражения определенного цвета. Например, веб-дизайнер будет использовать шестнадцатеричное значение FF0000 для определения красного цвета. Это обозначается как FF, 00,00, , который определяет количество красного, зеленого и синего цветов, которые следует использовать ( RRGGBB ); 255 красных, 0 зеленых и 0 синих в этом примере.

Тот факт, что шестнадцатеричные значения до 255 могут быть выражены двумя цифрами, а цветовые коды HTML используют три набора из двух цифр, это означает, что существует более 16 миллионов (255 x 255 x 255) возможных цветов, которые можно выразить в шестнадцатеричном формате, экономя много места по сравнению с выражением их в другом формате, как десятичный.

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

Как считать в шестнадцатеричном

Подсчет в шестнадцатеричном формате прост, если вы помните, что в каждом наборе чисел есть 16 символов.

В десятичном формате мы все знаем, что мы считаем так:

Однако в шестнадцатеричном формате мы считаем вот так, включая все 16 чисел:

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

Как вручную преобразовать шестнадцатеричные значения

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

14 разбивается на 10 и 4 (10 + 4 = 14), а 12 упрощается как 10 и 2 (10 + 2 = 12). При сложении 10, 4, 10 и 2 равны 26.

Когда вводятся три цифры, например 123, мы знаем, что должны посмотреть на все три места, чтобы понять, что они на самом деле означают.

3 стоит самостоятельно, потому что это последний номер. Уберите первые два, и 3 по-прежнему 3. 2 умножается на 10, потому что это вторая цифра в числе, как и в первом примере. Опять же, уберите 1 из этих 123, и у вас останется 23, что составляет 20 + 3. Третье число справа (1) берется 10 раз, дважды (100 раз). Это означает, что 123 превращается в 100 + 20 + 3 или 123.

Вот два других способа взглянуть на это:

Вставьте каждую цифру в нужное место в формуле сверху, чтобы превратить 123 в: 100 ( 1 X 10 X 10) + 20 ( 2 X 10) + 3 или 100 + 20 + 3, что составляет 123.

То же самое верно, если число исчисляется тысячами, например, 1234. 1 действительно 1 х 10 х 10 х 10, что делает его на тысячном месте, 2 на сотых и так далее.

Шестнадцатеричное выполняется точно так же, но использует 16 вместо 10, потому что это система с базовым 16 вместо базового 10:

Например, скажем, у нас есть проблема 2F7 + C2C, и мы хотим знать десятичное значение ответа. Сначала вы должны преобразовать шестнадцатеричные цифры в десятичные, а затем просто сложить числа вместе, как вы это сделали с двумя примерами выше.

Как мы уже объяснили, от нуля до девяти в десятичной и шестнадцатеричной системе одинаковы, а числа от 10 до 15 представлены в виде букв от A до F.

Первое число справа от шестнадцатеричного значения 2F7 стоит само по себе, как в десятичной системе, и становится равным 7. Следующее число слева от него нужно умножить на 16, так же, как второе число из 123 (2) выше необходимо умножить на 10 (2 X 10), чтобы сделать число 20. Наконец, третье число справа необходимо умножить на 16, дважды (что составляет 256), как десятичное число нужно умножить на 10, дважды (или 100), когда он имеет три цифры.

C2C преобразуется в десятичное число следующим образом: 3 072 ( C [12] X 16 X 16) + 32 ( 2 X 16) + C [12] = 3116

Опять же, C равно 12, потому что это 12-е значение, когда вы считаете с нуля.

Это означает, что 2F7 + C2C на самом деле составляет 759 + 3116, что равно 3875.

Хотя приятно знать, как это сделать вручную, конечно, гораздо проще работать с шестнадцатеричными значениями с помощью калькулятора или конвертера.

Шестнадцатеричные конвертеры и калькуляторы

Шестнадцатеричный конвертер полезен, если вы хотите перевести шестнадцатеричное в десятичное или десятичное в шестнадцатеричное, но не хотите делать это вручную. Например, ввод шестнадцатеричного значения 7FF в конвертер мгновенно скажет вам, что эквивалентное десятичное значение равно 2047.

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

Больше информации о шестнадцатеричном

Шестнадцатеричные значения иногда записываются с префиксом «0x» (0x2F7) или с нижним индексом (2F716), но это не меняет значение. В обоих этих примерах вы можете оставить или удалить префикс или индекс, а десятичное значение останется 759.

Всем, кто общается с компьютером или другой цифровой техникой, приходилось встречать загадочные записи типа 10FEF, которые кажутся непосвященным каким-то шифром. Что скрывается за этими символами? Оказывается, это просто цифры. Те, которые использует шестнадцатиричная система счисления.

шестнадцатиричная система счисления

Каждый школьник знает или хотя бы где-то слышал, что все цифры, которые мы обычно используем, образуют десятичную систему счисления. Это название она носит просто потому, что различных символов в ней всего десять (от 0 до 9). Любое число в нашей привычной системе может быть записано с их помощью. Однако, оказывается, использовать ее удобно бывает далеко не всегда. Например, при обмене информацией между цифровыми устройствами проще всего применять систему счисления, в которой есть только две цифры: «0» - нет сигнала - или «1» - есть сигнал (напряжение или что-то еще). Она называется двоичной. Однако, чтобы описать процессы внутри таких устройств с ее помощью, придется выполнять слишком длинные и трудные для понимания записи. Поэтому была придумана шестнадцатиричная система счисления.

шестнадцатиричная система

Почему же для цифровых устройств используется именно система, которая содержит шестнадцать разных символов? Как известно, информация в компьютерах передается в виде байтов, которые обычно содержат 8 бит. А единица данных – машинное слово – включает в себя 2 байта, то есть 16 бит. Таким образом, с помощью шестнадцати разных символов можно описать ту информацию, которая является мельчайшей частицей при обмене. Шестнадцатиричная система счисления включает наши привычные цифры (естественно, от 0 до 9), а также первые буковки латинского алфавита (A, B, C, D, E, F). Именно с помощью этих символов принято записывать любую единицу информации. С ними можно производить любые арифметические действия. То есть сложение, вычитание, умножение, деление. Результатом также будет шестнадцатеричное число.

переводчик систем счисления

Шестнадцатиричная система используется для записи кодов ошибок. Они могут возникать при работе различных программных продуктов. Например, так кодируются ошибки операционной системы. Каждое число при этом стандартное. Можно выяснить, какая именно ошибка произошла в процессе работы, расшифровав его с помощью инструкции. Также применяются такие символы при написании программ на языках низкого уровня, например ассемблере. Шестнадцатиричная система счисления любима программистами еще и потому, что ее составляющие очень легко могут быть переведены в двоичные, которые являются «родными» для всей цифровой техники. С помощью таких символов описывают также цветовые схемы. Кроме того, абсолютно все файлы в компьютере (и текстовые, и графические, и даже музыкальные или видео) представляются после трансляции в виде последовательности двоичных кодов. Просматривать исходный удобнее всего как раз в виде шестнадцатеричных символов.

Конечно, любое число можно записать в различных системах счисления. Это и десятичная, и двоичная, и шестнадцатеричная. Чтобы перевести слово из одной из них в другую, следует воспользоваться таким сервисом, как переводчик систем счисления, или сделать это самостоятельно с помощью определенного алгоритма.

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

Иногда понятно почему. Например, когда код ошибки 970 (10), то проще записать 3CA(16)), это просто удобно, и понятно.

НО вот например когда маленькие числа переводят в шестнадцатиричную систему, то этого я не понимаю

и т.д., разве не проще и понятней будет записать в десятичной системе счисления?

Подскажите пожалуйста, зачем и почему это используется ?

  • Вопрос задан более двух лет назад
  • 353 просмотра

Простой 1 комментарий

Это вопрос масштабируемости кода. В сложных приложениях или библиотеках API, где возможных ошибок/экспешенов может быть много и на разных уровнях байтовая структура кода ошибки упрощает организацию иерархии этих ошибок и их парсинг внутри кода для отладочного вывода например.
Та же константа OP_INSERT может на более высоком уровне быть младшим байтом ошибки с кодом 970. А старший байт значения 970 может определять какой конкретно обработчик в данном случае вызывать. При этом самих обработчиков может хоть 20 быть (от ошибки при подключении клавиатуры до ошибки при подключении дисплея), но всем им можно передать одну единственную константу OP_INSERT/младший байт кода ошибки.
В свою очередь 0х1, 0х2, 0х4 это отдельные биты в байте. И если на более высоком уровне возникло сразу несколько ошибок низкого уровня, то вы легко и явно сообщаете об этом обработчику путём установки соответствующих битов байта ошибки в 1, обработчик же эти биты последовательно проверяет и обрабатывает. При десятичном представлении это достаточно сложно реализовать было бы.

OnYourLips

Потому что легко ложится на двоичную систему счисления, и каждый байт предстает двумя цифрами.
И такие данные обычно в десятичной системе бессмысленны.

DMGarikk

а вы посмотрите на ваши константы в бинарном виде и чем они отличаются и поймете почему
грубо говоря получается так;
OP_INSERT = 001 (01)
OP_UPDATE = 010 (02)
OP_DELETE = 100 (04)

и сочетания
OP_INSERT+OP_DELETE = 101 (5)
OP_INSERT+OP_UPDATE = 011 (3)
OP_INSERT+OP_UPDATE+OP_DELETE = 111 (7)

и со всем этим добром удобно использовать всякие and/or/not операции

alex4answ

Игорь , видимо я еще слишком нуб для работы с этим)
Спасибо за ответ, когда дорасту, приду и перечитаю

п.1 чтобы все было единообразно, хоть и безобразно.
представь себе записи чисел 16-ого формата и циферок 10-ого формат будут произвольно чередоваться. большая вероятность того что человек допустит ошибку и запишет число не так как надо.

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

пока не попадешь в коллектив с четким следованием п.1 :) там и не на такое натянут.

Для чего нужна шестнадцатеричная система счисления

Привычная для человека система счисления – десятичная. В ее основу входят десять цифр от 0 до 9. Шестнадцатеричную систему отличает наличие в ней первых шести букв латинского алфавита для записи чисел помимо основных цифр. То есть после цифры 9 следует символ «A», который соответствует числу 10 для десятичной системы. Соответственно, F в шестнадцатеричной системе – это 16 в десятичной. Использование шестнадцати символов в системе – неслучайный выбор.

Единица информации – бит. Восемь бит образуют байт. Существует такое понятие, как машинное слово – это единица данных, представляющая собой два байта, то есть шестнадцать бит. Таким образом, используя шестнадцать различных символов, можно описывать любую информацию, которая при обмене данных будет наименьшей частицей. С ними можно производить любые арифметические действия, результат, соответственно, получится тоже в шестнадцатеричной системе.

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

Применение

Наиболее широкое применение шестнадцатеричной системы счисления – это коды ошибок программных продуктов, например, операционной системы. Числа, заложенные в этих кодах, стандартизированы. Имея специальную таблицу, всегда можно определить, что именно означает та или иная ошибка.

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

Также одно из применений шестнадцатеричных символов – описание цветовых схем, то есть три компонента R, G, B описываются соответствующим данной системе способом. Данный подход к записи получил название шестнадцатеричный цвет

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

Читайте также: