Site Loader

Содержание

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



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

c++ binary hex
Поделиться Источник Usman Qamar     18 января 2018 в 15:14

2 ответа




7

Есть 10 различных типов людей: те, кто понимает двоичный код, те, кто этого не понимает, и те, кто понимает, что эта шутка в тринарии.

Люди лучше справляются с меньшим количеством символов большего количества типов. Компьютеры предназначены для обработки 2 символов (0 и 1) и их большого количества.

Hex-полезный формат, поскольку он использует меньше символов и больше типов, но его легко конвертировать в/из двоичного файла.

Поэтому, когда вы хотите изучить двоичный файл или ввести его, hex очень полезен для людей.

Обычно это лучше, чем восьмеричное число (основание 8), потому что каждая цифра hex составляет 4 бита, а двоичные данные обычно располагаются в группах степеней 2 из-за того, как работает наша компьютерная битовая адресация. Таким образом, у вас будет 8 битных байтов, 16 байтовых слов, 32 байтовых двойных слов и 64 байтовых четырехзначных слов; это составит 2, 4, 8 и 16 hex цифры.

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

Этот ответ предполагает, что «real life»-это «working with computers». От программирования до выбора цветов на веб-странице вы будете использовать hex при этом.

Поделиться Yakk — Adam Nevraumont     18 января 2018 в 15:21



1

Если вы застряли с использованием компилятора pre-c++14, у вас не будет двоичных литералов, доступных только в качестве расширения. Даже в этом случае, поскольку 4 двоичных цифры всегда эквивалентны 1 hex цифре, часто проще правильно получить длинные константы, используя hex вместо двоичных. (представьте себе, например, запись 33 двоичных цифр, необходимых для получения 0x100000000, было бы легко пропустить 0 или вставить лишнюю).

Поделиться SoronelHaetir     18 января 2018 в 15:22


Похожие вопросы:


Преобразование fl в шестнадцатеричный код в c++

Я новичок в C++ и программировании, и я хочу написать программу C++ для преобразования поплавка в шестнадцатеричный с помощью указателей Я смотрел на другие темы и действительно пытался ухватиться…


Преобразование двоичного кода в шестнадцатеричный?

Просто интересно, как я буду преобразовывать двоичный код в шестнадцатеричный?? Должен ли я сначала преобразовать двоичный код в decimal, а затем в шестнадцатеричный?? Например,…


Как преобразовать текстовый файл в двоичный с помощью команд linux

У меня есть код hex двоичного файла в текстовом (строковом) формате. Как преобразовать его в двоичный файл с помощью команд linux, таких как cat и echo ? Я знаю команду, следующую за командой с…


как преобразовать nsstring в двоичный код, а этот двоичный код-в шестнадцатеричный

У меня есть несколько значений в строке Вот пример моей строки str1 = @20AB str2 = @298C30:2FC0A0:2FC09C:FFFFFFFF:2FDFCD34:00 str3 = @4ffd565372df51089f2c824526f4f95a13daa867 str4 = hexa(binary(str1…


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

У меня есть список произвольных строк. Я хотел бы преобразовать их в шестнадцатеричный цветовой код. Код не должен быть случайным, так как очень важно, чтобы метод возвращал один и тот же цветовой…


Как преобразовать шестнадцатеричный код в цвет в windows 8

У меня есть шестнадцатеричный код FFB800, и мне нужно было преобразовать его в Color в WinRT. заранее спасибо.


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

Я получаю 128-битный двоичный адрес, и мне нужно преобразовать его в шестнадцатеричный формат. Вот что я должен сделать: Я получу 128-битное двоичное число Мне нужно разделить его на 8 блоков по 16…


Реальное использование анализа языков в реальной жизни?

Я мог бы легко использовать части компилятора (например, сканирование, синтаксический анализ, синтаксический анализ), чтобы написать свой собственный компилятор или анализатор кода (например,…


java проектирование открытого закрытого принципа в реальной жизни

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


преобразование из 8 бит двоичного кода в шестнадцатеричный

когда я пытаюсь преобразовать 8 значный двоичный код в шестнадцатеричный десятичный (Например: 00001010 на выходе получается ), но мне нужна 0А , а также(например: 10100000 на выходе получается ),…

Шестнадцатеричное кодирование. Шестнадцатеричная нумерация и адресация

Шестнадцатеричная система счисления (также — шестнадцатеричный код) является позиционной системой счисления с целочисленным основанием 16. Иногда в литературе также используется термин hex (произносится «хекс», сокращение от англ. hexadecimal). Цифрами данной системы счисления принято использовать арабские цифры 0—9, а также первые символы латинского алфавита A—F. Буквы соответствуют следующим десятичным значениями:

  • * A —10;
  • * B —11;
  • * C —12;
  • * D —13;
  • * E — 14;
  • * F — 15.

Таким образом, десять арабских цифр вкупе с шестью латинскими буквами и составляют шестнадцать цифр системы.

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

Применение . Шестнадцатеричный код широко применяется в низкоуровневом программировании, а также в различных компьютерных справочных документах. Популярность системы обоснована архитектурными решениями современных компьютеров: в них в качестве минимальной единицы информации установлен байт (состоящий из восьми бит) — а значение байта удобно записывать с помощью двух шестнадцатеричных цифр. Значение байта может ранжироваться с #00 до #FF (от 0 до 255 в десятичной записи) — другими словами, используя

шестнадцатеричный код , можно записать любое состояние байта, при этом не остаётся «лишних» не используемых в записи цифр.

В кодировке Юникод для записи номера символа используется четыре шестнадцатеричных цифры. Запись цвета стандарта RGB (Red, Green, Blue — красный, зелёный, синий) также часто использует шестнадцатеричный код (например, #FF0000 — запись ярко-красного цвета).

Способ записи шестнадцатеричного кода.

Математический способ записи . В математической записи основание системы записывают в десятичном виде в нижнем индексе справа от числа. Десятичную запись числа 3032 можно записать как 3032 10 , в шестнадцатеричной системе данное число будет иметь запись BD8 16 .

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

* В синтаксисе некоторых разновидностей языка ассемблера используется латинская буква «h», которая ставится справа от числа, например: 20Dh. Если число начинается с латинской буквы, то перед ним ставится ноль, например: 0A0Bh. Это сделано для того, чтобы отличать от констант значения, использующие шестнадцатеричный код

;

* В прочих разновидностях ассемблера, а также в Pascal (и его разновидностях, таких как Delphi) и некоторых диалектах Basic, применяют префикс «$»: $A15;

* В языке разметки HTML, а также в каскадных файлах CSS, для указания цвета в формате RGB с шестнадцатеричной системой записи, используется префикс «#»: #00DC00.

Как перевести шестнадцатеричный код в другую систему?

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

Двоичная СС

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

Например, требуется выполнить перевод шестнадцатеричного числа A14: в нём три цифры. Используя правило, запишем его в виде суммы степеней с основанием 16:

A14 16 = 10.16 2 + 1.16 1 + 4.16 0 = 10.256 + 1.16 + 4.1 = 2560 + 16 + 4 = 2580 10

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

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

Таблица тетрад для перевода.

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

Двоичная СС

Восьмеричная СС

Пример перевода из шестнадцатеричной системы в двоичную : A5E 16 = 1010 0101 1110 = 101001011110 2

Пример перевода из двоичной системы в шестнадцатеричную : 111100111 2 = 0001 1110 0111 = 1E7 16

В этом примере количество цифр в исходном двоичном числе не было равным четырём (9), поэтому были добавлены незначащие нули — общее число цифр стало 12.

Автоматический перевод . Быстрый перевод из шестнадцатеричной системы счисления в одну из трёх популярных систем (двоичную, восьмеричную и десятичную), как и обратный перевод, можно выполнить, используя стандартный калькулятор из комплекта поставки ОС Windows. Откройте калькулятор, выберите в меню Вид -> Программист. В данном режиме можно устанавливать систему счисления, используемую в данный момент (см. меню слева: Hex, Dec, Oct, Bin). При этом изменение текущей системы счисления автоматически производит перевод.

Возникла в древнем Вавилоне. В Индии система работает в виде позиционной десятичной нумерации с использованием нуля, у индусов данную систему чисел позаимствовала арабская нация, у них, в свою очередь, взяли европейцы. В Европе эту систему стали называть арабской.

Позиционная система счисления — значение всех цифр зависит от позиции (разряда) данной цифры в числе.

Примеры , стандартная десятичная система счисления — это позиционная система. Допустим, дано число 453 . Цифра 4 обозначает сотни и соответствует числу 400, 5 — кол-во десятков и соответствует значению 50 , а 3 — единицы и значению 3 . Легко заметить, что с увеличением разряда увеличивается значение. Таким образом, заданное число запишем в виде суммы 400+50+3=453.

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

Шестнадцатеричная система счисления (шестнадцатеричные числа) — позиционная система счисления. Основанием шестнадцатеричной системы счисления является число 16.

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

Первыми десятью цифрами из шестнадцати шестнадцатеричных цифрах является стандартный интервал 0 — 9 , последующие шесть цифр выражают при помощи первых букв латинского алфавита: A , B , C , D , E , F . Перевод из шестнадцатеричной системы в двоичную систему и в обратную сторону делают аналогично процессу для восьмеричной системы.

Применение шестнадцатеричной системы счисления.

Шестнадцатеричную систему счисления довольно хорошо используют в современных компьютерах, например с ее помощью указывают цвет: #FFFFFF — белый цвет.

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

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

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

Например , переведем шестнадцатеричное число 5A3 в десятичное. Здесь 3 цифры. Исходя их выше сказанного правила, приведем его к виду суммы степеней с основанием 16:

5A3 16 = 3·16 0 +10·16 1 +5·16 2 = 3·1+10·16+5·256 = 3+160+1280 = 1443 10

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

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

Например :

010110100011 2 = 0101 1010 0011 = 5A3 16

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

Алгоритм перевода чисел из одной системы счисления в другую.

1. Из десятичной системы счисления:

  • делим число на основание переводимой системы счисления;
  • находим остаток от деления целой части числа;
  • записываем все остатки от деления в обратном порядке;

2. Из двоичной системы счисления:

  • для перевода в десятичную систему счисления находим сумму произведений основания 2 на соответствующую степень разряда;
  • для перевода числа в восьмеричную разбиваем число на триады.

Например, 1000110 = 1 000 110 = 1068

  • для перевода числа из двоичной системы счисления в шестнадцатеричную разбиваем число на группы по 4 разряда.

Например, 1000110 = 100 0110 = 4616.

Таблицы для перевода:

Двоичная СС

Шестнадцатеричная СС

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

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

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

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

Применение

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

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

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

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

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

Системы счисления

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

Понятие шестнадцатеричной системы

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

Где применяется

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

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

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

Но, как мы знаем, традиционных («арабских») цифр всего десять. А требуется шестнадцать. Получается, что не хватает шести знаков.

Замечание
Таким образом, возникает чисто дизайнерская задача по теме «Знаки» — придумать недостающие символы для цифр
.

Значит, в свое время специалистам необходимо было придумать какие-нибудь новые знаки. Но когда-то, в начале компьютерной эры, особого выбора в знаках не было. Программисты располагали только знаками цифр и букв. Поэтому они пошли по элементарному пути: взяли первые буквы латинского алфавита в качестве цифр, тем более что исторически это не первый случай (мы уже упоминали, что первоначально вместо цифр многие народы использовали буквы).

Замечание
Надеемся, что всем понятно, почему в этом случае нельзя использовать, например, числа «10», «11», «12» и т. д.? Потому что, если мы говорим о шестнадцатеричной системе счисления, то должно быть шестнадцать цифр , а не чисел
.

И десятичное число «10» стали обозначать латинской буквой «А» (точнее, «цифрой А»). Соответственно, дальше идут цифры «В», «С», «D», «Е» и «Р.

Поскольку мы намеревались построить шестнадцатеричную систему, то, начиная с нуля, здесь как раз и получится 16 цифр. Например, цифра «D» — это десятичное число «13», а цифра «F» — это десятичное число «15».

Когда к шестнадцатеричному числу «F» прибавляем единицу, то, поскольку эти цифры у нас кончились, в этом разряде ставим «О», а в следующий разряд переносим единицу, поэтому получается, что десятичное число «16» будет представлено в шестнадцатеричной системе счисления числом «10», т. е. получается «шестнадцатеричная десятка». Соединим десятичные и шестнадцатеричные числа в единую таблицу (табл. 4.5).

Таблица 4.5 . Соответствие десятичных и шестнадцатеричных чисел.

Десятичное число Шестнадцатеричное число Десятичное число Шестнадцатеричное число
0-9 0-9 29 1D
10 А 30
11 В 31 1F
12 С 32-41 20-29
13 D 42-47 2A-2F
14 Е 48-255 30-FF
15 F 256 100
16 10 512 200
17-25 11-19 1024 400
26 1280 500
27 4096 1000
28 1C

Шестнадцатеричная система используется, чтобы более компактно записывать двоичную информацию. В самом деле, «шестнадцатеричная тысяча», состоящая из четырех разрядов, в двоичном виде занимает тринадцать разрядов (1000 16 = 1000000000000 2).

При обсуждении систем счисления неоднократно фигурировали «десятки», «сотни» и «тысячи», поэтому необходимо обратить внимание на так называемые «круглые» числа.

Дневники чайника

Дневники чайника

Системы счисления и устройство памяти.


Второй день

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

Только целые и только положительные.

Возможно, вы проходили эту тему в школе, и кто-то из вас даже что-то помнит, но начинать нужно именно отсюда.

Нас будут интересовать 3 системы счисления — dec, bin, hex.

Десятичная — Decimal (Dec или буква «d»)

Aрабская система — она называется десятичной, потому что в ней используются 10 символов.

0,1,2,3,4,5,6,7,8,9

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

Запомни, юнга! В космосе нет верха, нет низа — это всё условности. И то, что у тебя десять пальцев на руках, это всего лишь исключение. У наших бинарных братьев всего два пальца, они смеются над тобой — урод десятипалый :). У них есть на это право, их больше и они старше. С Бинарниками надо дружить, иначе корабль собьют на подходе к первой же станции.

Двоичная система счисления — Binary (Bin или буква «b»)

Нетрудно догадаться, что двоичная система имеет всего два символа 0 и 1.

Компьютер — это очень простой прибор, в нём есть только выключатели — биты (вкл. =1, выкл. =0).

Понятие Bit, скорее всего, произошло от английских слов Binary — двоичная и Digit — цифра. Но поскольку битов о-о-очень много, биты строятся в байты.

11111111 - это байт
01010101 - и это байт
00000000 - и это тоже байт

Бит может иметь значение 0 или 1.

Байт — это 8 бит, и он может иметь значения от 0000 0000 — ноль, до 1111 1111 — 255 в десятичной системе (пробелы для читаемости). Получается, что у байта 256 значений (всегда считается вместе с нулевым).

биты       dec-цифры     |    биты       dec-цифры
00000001 = 1             |    00001011 = 11
00000010 = 2  !          |    00001100 = 12
00000011 = 3             |    00001101 = 13
00000100 = 4  !          |    00001110 = 14
00000101 = 5             |    00001111 = 15
00000110 = 6             |    00010000 = 16  !
00000111 = 7             |    00010001 = 17
00001000 = 8  !          |    00010010 = 18
00001001 = 9             |    00010011 = 19
00001010 = 10            |    00010100 = 20
И так до 11111111 = 255.

Переводить из десятичных цифр в биты (то есть в двоичные цифры) и обратно можно на виндовом калькуляторе (в инженерном режиме). Потренируйтесь пока так. Учить наизусть всю таблицу не нужно, познакомились — уже хорошо. :)

Как вы думаете, почему я выделил 2,4,8,16?

Правильно, это «круглые» цифры. В десятичной системе они, конечно, не круглые, но в двоичной получается 10,100,1000,10000. Поэтому десятичная система для компьютерных вычислений не очень подходит. Вместо неё используется…

Шестнадцатиричная система счисления — Hexadecimal (Hex или буква «h»)

Имеет целых 16 символов. Чтоб не придумывать новые символы, в hex используются буквы латинского алфавита.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F  - это цифры

Я приравняю все hex-символы к десятичным значениям.

h d    h d    h d     h d 
0=0    4=4    8=8     C=12
1=1    5=5    9=9     D=13
2=2    6=6    A=10    E=14
3=3    7=7    B=11    F=15

В этой системе счисления ноль справа прибавляется при умножении на 16 (десятичных).

Лишние нули слева от числа значения не имеют, так же, как и в математике.

Однако если число начинается с буквы (A-F), ноль слева нужен при наборе программ. Иначе как компилятор будет определять, что началось число? А чтобы не путать числа в разных системах и писать при этом коротко, пишут:

d — десятичные значения

01,02,03,04,05,06,07,08,09,10d,11d,12d,13d,14d,15d,16d,17d,18d,19d,20d...

h — шестнадцатиричные значения

01,02,03,04,05,06,07,08,09,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,10h,11h,12h,13h,14h...

b — двоичные значения

0,1,10b,11b,100b...

Вот примеры:

01   *  16d = 10h     (получается 16d)
10h  *  16d = 100h    (получается 256d)
100h *  16d = 1000h   (получается 4096d)


1    *  10h  = 10h
10h  +  10h  = 20h
10h  *  10h  = 100h
100h +  100h = 200h

10b  *  10b  = 100b

Удобно, правда? А вот так?

10d + 10h = 1Ah или 26d

Неудобно. Поэтому всегда ВСЕ ВЫЧИСЛЕНИЯ ДЕЛАЙТЕ В ОДНОЙ СИСТЕМЕ!

Сам я никогда не перевожу из hex в dec и в bin в уме или на листочке, для этого есть калькулятор. И мне знакома эта растерянность перед новыми цифрами. Но я и не рассчитываю, что стало понятно хоть что-то. Просто вы должны знать, что системы счисления hex & bin существуют. Через месяц практики вы привыкнете к шестнадцатиричной системе как к родной. А вот двоичная будет использоваться только в пределах четырёх байт. На экране монитора мне лишь изредка приходится видеть биты как «01011010», хотя часто их очень не хватает.

Теперь ещё раз про байт.


bin-числа   hex-числа
00001000  = 08
00010000  = 10h
00100000  = 20h
01000000  = 40h
10000000  = 80h
...
11111111b = FFh

В байт умещаются ровно два разряда hex-системы счисления! Именно так мы и будем видеть байты. Вспомните наш нулевой эксперимент:

         байты в hex                     символы в кодировке DOS (Р - русская буква)
90 41 90 41 90 90 41 41 42 43 44       |    РAРAРРAABCD

Теперь вы понимаете, что я имел в виду, сказав: «90 здесь 144». Правильнее было бы сказать 90h = 144d.

Байт это 8 бит, и что самое главное, байт — минимально адресуемая ячейка памяти.

Если нужно прочитать информацию, например, из бита 900, то нам нужно обратиться к 112-му байту и посмотреть в нём бит номер 4.

      | Адрес в байтах    |    Информация в БИТАХ
      |                   |    76543210 - номера бит (разряд)
------|-------------------|-----------------------------------------------
 111d | 0000006F          |    00000000
 112d | 00000070          |    000?0000
 113d | 00000071          |    00000000
 114d | 00000072          |    00000000

Конечно же, в компьютере физически биты не разделяются пробелами. Вся оперативная память, например, — сплошной поток выключателей :).

Но при отображении биты обычно разделяют на:
байты — 8 бит, две hex-цифры, или
тетрады — 4 бита, одна hex-цифра.

Обратите внимание на запись. Мы нумеруем биты справа налево и обязательно от нуля — это стандарт для учебников и документации. Кроме того, нумерация от нуля имеет математический смысл (разряды нужно осознать!).

Хотя так информацию мы видеть практически не будем. Вместо битов везде будут hex-байты, вот так:

        Адрес в байтах    |    Информация в БАЙТАХ
       -------------------|---------------------------------------
        0000006F          |    00
        00000070          |    00
        00000071          |    00
        00000072          |    00

или вот так:

        Адрес в байтах    |    Информация в БАЙТАХ
       -------------------|---------------------------------------
        0000006F          |    00 00 00 00

Здесь вынужден заметить: адреса в файле и адреса в оперативной памяти — это совершенно разные вещи.

Далее по тексту я буду грубо писать: «адрес в памяти», под этими словами мы будем подразумевать часть логического адреса, которую принято называть смещением (offset). В рамках наших уроков смещение — вполне достаточный адрес в памяти. Однако смещение — это не полный логический адрес и называть смещение адресом без оговорок — довольно грубо! В следующем витке мы обязательно разберём адресацию памяти в разных режимах процессора, и там я расскажу, что такое сегмент и смещение.

А сейчас запомните. Когда я пишу: адрес в файле, я подразумеваю номер байта в файле от нуля. И это норма. А вот когда я пишу: адрес в памяти, это значит, что речь идёт о части логического адреса, называемой смещением (тоже от нуля).

Да простят меня профи за такую вольность.

Юнга, после обеда я научу тебя писать дельные программы для вспомогательного бортового оборудования. Ты, конечно, пуст, как первая ступень, и ни черта не понял за сегодня, но у меня нет времени рассусоливать, нас давно ждут.

Первая полезная программа

Что там у нас дальше по учебнику? Этого вам пока не надо… Этого я и сам ещё не знаю… Тут слишком много умностей… Нет, пожалуй, продолжу, как предложил Олег Калашников. Пожалуй, лучший подход для любителей практики.

Эксперимент 01 (prax01.com)

Я по-прежнему подразумеваю, что вы используете WinXP и пример должен работать.

Создайте файл с расширением «com» (напомню в FAR’e — Shift+F4). Назвав файл, напечатайте в нём любую букву или цифру, ну, допустим, «1». Сохраните файл (в FAR’e — Esc).

Нет, это ещё не программа, этот файл выполнять не нужно. Откройте в Hiew’e.

Сейчас вы видите 1, если нажать «F4» (Mode), то, как и в тот раз, вы увидите байт в hex-виде. F4 еще раз покажет дизассемблерный код. Если в файле единица, то выглядеть код будет так:


Адреса    Байты         Имена    Операнды
00000000: 31            xor    [bx][si],ax

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

Предмет, с (или над) которым производится действие, называется операнд.

Операнды в ассемблере для Интел-совместимых процессоров принято разделять запятыми. То есть в некоторых системах или в других языках программирования пишут:
AX xor 44
или вполне может быть такая форма записи:
44,55 xоr AX
Но в x86 ассемблере принято писать так:

xor AX,44

где AX - операнд 1 (он же приёмник), 
  а 44 - операнд 2 (он же источник).

Из всего этого главное сейчас усвоить, что операндов не больше трёх (чащё всего 2), они разделяются запятыми и идут после имени команды. Давайте писать настоящую программу на ассемблере.

В Hiew’e (когда вы видите дизассемблерный код нашего файла) нажмите F3 и затем Enter. Теперь можно набирать программу на ассемблере (символ «1» в файле должен стереться). Каждая инструкция вводится Enter’ом и превращается в строку, если нет явной ошибки. Пробелы нужны только для удобства, поэтому неважно, сколько их. Пишите как хотите, строчными или прописными буквами, но только по-англицки. :)

Вот код программы, его нужно набрать:

mov  ah,9
mov  dx,10Dh
int  21h
mov  ah,10h
int  16h
int  20h

Когда всё напишете, нажмите один раз Esc, чтобы прекратить ассемблирование, и F9, чтобы сохранить файл.

Это был весь код программы, которая должна выводить строку на экран! Круто, правда? Только не хватает самой строки.

Для того, чтоб вписать строку, нужно открыть файл в текстовом редакторе (в FAR’e — F4).

Допишите после всех закорючек (только не сотрите ничего) любую текстовую строку и в конце поставьте знак $.

Это может выглядеть примерно так:

_?_?
_?_?_?_?_Good Day!$

Закорючки будут другие, но вид такой. Сохраните программу. Откройте снова в Hiew’e.


Адреса    Маш.команды Команды Асма      комментарии
          Байты       Имена Операнды   

00000000: B409        mov   ah,009    ; Поместить значение 9 в регистр AH (параметр1)
00000002: BA0D01      mov   dx,0010D  ; Поместить адрес текстовой строки в DX (параметр2)
00000005: CD21        int   021       ; Вызвать подпрограмму, в которой
                                      ; отработает функция вывода текста на экран (AH=09)

00000007: B410        mov   ah,010    ; Поместить значение 10h в регистр AH (параметр1)
00000009: CD16        int   016       ; Вызвать подпрограмму ожидания нажатия клавиши
0000000B: CD20        int   020       ; Подпрограмма завершения

0000000D: 47          inc   di
0000000E: 6F          outsw
0000000F: 6F          outsw
00000010: 64204461    and   fs:[si][61],al
00000014: 7921        jns   000000037  ---X
00000016: 24          and   al,000

Принято так, что после точки с запятой идёт комментарий, просто пояснение для людей. В этом примере я откомментировал все строки кода программы. Только вам от этого пока не легче.

Видите, начиная с адреса в файле 0000000Dh, появились команды, которые вы не писали, это всего лишь строка текста. Её процессор выполнять не будет только потому, что перед строкой текста стоит код завершения (int 20).

Запустите программу (можно из проводника)… Если компьютер с вами поздоровался — я вас тоже поздравляю! Значит, у вас есть шанс научить его делать и более сложные вещи.

Вы увидите окно DOS-приложения с текстом:
Good Day!
Нажатие на любую клавишу вызовет выход из программы.

Если же этого не произошло — не расстраивайтесь. Перепроверьте всё несколько раз, может быть, вы опечатались. Прочитайте «Аннотацию» в последней главе или комментарии. Я пока ничего подобного не написал, но, возможно, когда-нибудь придётся. Ведь у нас нет гарантии, что новые твАрения MS или других «рук» не изменят ситуацию в худшую сторону. Хотя, будем надеяться, что программа заработает и на новых OS’ях и процессорах.

«$» не выводится. Хм, интересно :/ Это условный символ конца строки?

Да, но в windows мы будем использовать нулевой байт (00h) для этой же цели.

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

Прямо так и вижу следующие «почему»:
Почему mov?
Почему ah?
Почему 9?
И вообще, что это за подпрограммы-прерывания int 16, int 21, int 20.

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

На самом деле вывод строки на экран без специальной DOS-функции ничуть не сложнее. Мы используем именно такой способ из-за того, что он наиболее схож с программированием под Win. Здесь было бы аккуратнее и быстрее выводить на экран без специальной подпрограммы DOS-функций.

Но ДОС в прошлом, а нас ждёт Win32.

Cамое главное не переживать, если вы вдруг не понимаете что здесь к чему, поверьте, через пару уроков вы полностью поймёте эту программу.

Мы завтра весь день будем искать ответ на вопрос «Почему ah», так как этот «почему» — самый важный во всём ассемблере. Серьёзно!

Bitfry


Как работают hex-коды для обозначения цветов

Перевод статьи «How Hex Code Colors Work – and How to Choose Colors Without A Color Picker».

Каким бы проектом вы ни занимались, скорее всего на каком-то этапе вы начнете работать с цветами. Особенно, если вы (как и многие другие) начинаете изучение программирования с HTML и создания веб-страниц.

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

По мере накопления опыта вы начнете смотреть скорее на сами коды цветов, а не просто полагаться на редактор. Вы заметите, что выбираемые вами цвета обозначаются какими-то странными кодами, вроде #ff0000.

Это hex-коды цветов. Они — фундаментальная часть работы HTML и CSS. Если вы разберетесь в том, как они функционируют, это не только поможет вам сэкономить массу времени, но и позволит создавать более элегантный и надежный код, причем гораздо быстрее.

В этой статье я расскажу вам обо всем, что вам нужно знать о hex-кодировке цветов.

Что означает слово «hex»?

Для начала давайте разберем, что в термине «hex-код» означает слово «hex». В этом контексте «hex» — это сокращение слова «hexadecimal» (англ. «шестнадцатеричный»). Речь идет о шестнадцатеричной системе счисления, где основание чисел — 16, а не привычное нам 10 (в десятичной системе).

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

Это была просто дополнительная информация. Она вам не нужна для применения hex-кодов цветов, но может пригодиться, если захотите произвести впечатление на кого-нибудь.

Из каких компонентов состоит цвет?

Как шестнадцатеричные коды используются для обозначения RGB-цветов? (RGB — цветовая модель, описывающая способ кодирования цвета для цветовоспроизведения с помощью трёх цветов, которые принято называть основными. Сама аббревиатура RGB расшифровывается как red, green, blue — красный, зелёный, синий. — Прим. ред. Techrocks).

Каждый пиксель цветного монитора состоит из трех светящихся элементов красного, зелёного и синего цвета. Если рассмотрите экран в большом приближении, вы их увидите (если экран древний, слишком напрягаться не придется). Цвета, которые вы видите на экране, образуются благодаря управлению яркостью каждого из этих элементов.8. Просто еще один факт, который знать не обязательно).

К этому моменту внимательные читатели могли уже понять, насколько просто работать с цветами, представленными в такой форме. Черный цвет представляется как RGB (0,0,0), а белый — RGB (255,255,255). Ну а зеленый, соответственно, — RGB (0,255,0).

Hex-кодировка цветов

Теперь, зная, что в принципе означают коды цветов, давайте посмотрим на hex-коды. Возьмем, к примеру, #ff0000, и попробуем разобраться, что этот код означает.

Посмотрите на таблицу перевода чисел из шестнадцатеричной системы в десятичную, и вы увидите, что «FF» — это 255 в десятичной системе.

Это подсказка. Два первых символа в нашем hex-коде (да и во всех остальных тоже) относятся к красному цвету, и в данном случае его значение — 255. Следующие два символа отвечают за зеленый, а последние — за синий цвет.

Исходя из этого, вы можете понять, что #ff0000 — то же самое, что RGB (255,0,0). То есть, чистый красный. Аналогично, #ff00ff — это максимум красного и одновременно синего, а вместе они дают пурпурный (magenta).

На этом этапе вы, вероятно, уже осознали значение и элегантность hex-кодов. Поскольку они шестнадцатеричные, а максимальное значение каждого компонента — 255, при помощи всего 6 символов можно передать практически любой цвет.

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

Как использовать сокращенные обозначения цвета

Разобравшись с hex-кодами, вы можете начать использовать их в своих веб-проектах — вместо пипетки в программе для выбора цвета.

Но сначала будет полезным узнать, что это не единственные опции.

Поскольку HTML проектировался так, чтобы им было удобно пользоваться, он допускает использование сокращенной записи hex-кодов. Например, код чистого красного цвета #FF0000 можно сократить до #F00. Одна цифра для красного, одна для зеленого и одна для синего. Браузеры интерпретируют #FF0000 и #F00 одинаково.

Такая запись сокращает доступное количество цветов до примерно 4 тысяч, но ее применение дает некоторые преимущества.

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

Почему стоит использовать hex-коды

Большинство конструкторов сайтов позволяют вводить hex-код вместо выбора цвета при помощи мыши. Такой подход имеет ряд преимуществ.

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

Во-вторых, использование hex-кодов позволяет подбирать цвета куда более точно. Никакой графический инструмент не содержит 16 миллионов доступных цветов. Если вы пользуетесь кодами, вам доступны любые оттенки.

В-третьих, понимание того, как получаются цвета на экране, очень полезно при проектировании веб-страниц (да и любых программ). Зная, как разные устройства интерпретируют и выводят цвета, вы можете начать использовать hex-коды для смешивания цветов, и при этом быть уверенным, что на экране отобразится именно то, что вы хотели.

Дополнительные преимущества

Hex-коды применяются при работе с HTML, но не только. Практически все программы для работы с изображениями пользуются той же кодировкой. Таким образом, разобравшись, как работают hex-коды, вы получаете полезный и переносимый навык.

Как преобразовать числа из одной системы в другую

Числовая система определяет набор значений, которые используются для представления чисел. Компьютер использует двоичную систему исчисления. Двоичная и шестнадцатеричная система исчисления (используется для представления значений [номера и адреса памяти] в компьютерных системах) являются важными для программирования. Двоичные числа важны, потому что компьютер работает c двоичными числами — номера состоят из двух цифр 1 и 0. Шестнадцатеричные числа удобны, потому что они позволяют легко обрабатывать двоичные числа.

Delphi предоставляет множество полезных функций для преобразования целых чисел (в десятичной системе) строковые значения (строка это способ представления шестнадцатеричных и двоичных чисел), и наоборот.

Давайте посмотрим, какие функции можно использовать для преобразования чисел из одной системы в другую, каких функций не хватает и как легко реализовать их в Object Pascal. IntToHex, ObjectPascal.HexToInt.

В модуле SysUtils есть функция IntToHex, которая возвращает шестнадцатиричное представление числа.


function IntToHex (Value: Integer; Digits: Integer): String;

Хорошо, у нас есть возможность преобразовать целое число в шестнадцатеричное, а где функция HexToInt? Функция HexToInt не существует в Delphi?.

Тем не менее, Delphi позволяет использовать шестнадцатиричные выражения (используя префикс $). Вот простая функция HexToInt:


function HexToInt(HexNum: string): LongInt;
 begin
    Result:=StrToInt('$' + HexNum) ;
 end;

Функции IntToBin, BinToInt

Если Вы не знакомы с двоичными числами, то можете почитать Введение в двоичную арифметику.

Таким образом, как организовать функции IntToBin и BinToInt в Delphi. Вот один из примеров:


function IntToBin ( Value: LongInt; Digits: integer ): string;
 begin
     result := StringOfChar ( '0', Digits ) ;
     while Value > 0 do begin
       if ( Value and 1 ) = 1 then
         result [ Digits ] := '1';
       dec ( Digits ) ;
       Value := Value shr 1;
     end;
 end;

 function BinToInt(Value: String): LongInt;
 var i: Integer;
 begin
   Result:=0;
 // Удаляем ведущие нули
   while Copy(Value, 1, 1) = '0' do
    Value:=Copy(Value, 2, Length(Value) - 1) ;
 // преобразовываем
   for i:= Length(Value) downto 1 do
    if Copy(Value, i, 1) = '1' then
     Result:=Result + (1 shl (Length(Value) - i)) ;
 end;

Римские

В большинстве случаев сегодня используется арабская система исчисления. Десять однозначных цифр от 0 до 9, составляют символы нашей системы исчисления. Примером другой системе счисления является система римских цифр, которые могут представлять все числа от 1 до 1000000, используя только семь символов: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000. Пример: 1999 (арабская) является MCMXCIX (римская).

А вот функция для перевода целых арабских чисел в римские:


function IntToRoman(Value: LongInt): String;
 const
 Arabics: Array[1..13] of Integer = 1,4,
     5,9,10,40,50,90,100,400,500,900,1000) ;
 Romans: Array[1..13] of String = ('I','IV',
     'V','IX','X','XL','L','XC','C','CD','D','CM','M') ;
 var
    j: Integer;
 begin
   for j := 13 downto 1 do
   while (Value >= Arabics[j]) do begin
    Value := Value - Arabics[j];
    Result := Result + Romans[j];
   end;
 end;

По материалам About.com


parseInt() — JavaScript | MDN

Функция parseInt() принимает строку в качестве аргумента и возвращает целое число в соответствии с указанным основанием системы счисления.

 

The source for this interactive example is stored in a GitHub repository. If you’d like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

 

Параметры

string
Значение, которое необходимо проинтерпретировать. Если значение параметра string не принадлежит строковому типу, оно преобразуется в него (с помощью абстрактной операции ToString). Пробелы в начале строки не учитываются.
radix
Целое число в диапазоне между 2 и 36, представляющее собой основание системы счисления числовой строки string, описанной выше. В основном пользователи используют десятичную систему счисления и указывают 10. Всегда указывайте этот параметр, чтобы исключить ошибки считывания и гарантировать корректность исполнения и предсказуемость результата. Когда основание системы счисления не указано, разные реализации могут возвращать разные результаты.

Возвращаемое значение

Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ не получилось сконвертировать в число, то возвращается NaN

Функция parseInt преобразует первый переданный ей аргумент в строковый тип, интерпретирует его и возвращает целое число или значение NaN. Результат (если не NaN) является целым числом и представляет собой первый аргумент (string), рассматривающийся как число в указанной системе счисления (radix). Например, основание 10 указывает на преобразование из десятичного числа, 8 — восьмеричного, 16 — шестнадцатеричного и так далее. Если основание больше 10, то для обозначения цифр больше 9 используются буквы. Например, для шестнадцатеричных чисел (основание 16) используются буквы от A до F.

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

Так как некоторые числа включают символ e в своём строковом представлении (например, 6.022e23), то использование parseInt для усечения числовых значений может дать неожиданные результаты, когда используются очень малые или очень большие величины. parseInt не должна использоваться как замена для Math.floor().

Если основание системы счисления имеет значение undefined (не определено) или равно 0 (или не указано), то JavaScript по умолчанию предполагает следующее:

  • Если значение входного параметра string начинается с «0x» или «0X«, за основание системы счисления принимается 16, и интерпретации подвергается оставшаяся часть строки.
  • Если значение входного параметра string начинается с «0», за основание системы счисления принимается либо 8, либо 10, в зависимости от конкретной реализации. В спецификации ECMAScript 5 прописано использование 10 (десятичная система), но это поддерживается ещё не всеми браузерами, поэтому необходимо всегда указывать основание системы счисления при использовании функции parseInt.
  • Если значение входного параметра string начинается с любого другого символа, система счисления считается десятичной (основание 10).

Если первый символ строки не может быть преобразован в число, parseInt возвращает значение NaN.

С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернёт ли parseInt значение NaN в качестве результата, можно вызвать функцию isNaN. Если NaN участвует в арифметических операциях, результатом также будет NaN.

Для преобразования числа в строку в указанной системе счисления, используйте intValue.toString(radix).

Пример: Использование

parseInt

Все следующие примеры возвращают 15:

parseInt(" 0xF", 16);
parseInt(" F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);  
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);

Все следующие примеры возвращают NaN:

parseInt("Hello", 8); 
parseInt("546", 2);   

Все следующие примеры возвращают -15:

parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt(-15.1, 10)
parseInt(" -17", 8);
parseInt(" -15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);

Все следующие примеры возвращают 4:

parseInt(4.7, 10);
parseInt(4.7 * 1e22, 10); 
parseInt(0.00000000000434, 10); 

Следующий пример возвращает 224:

Хотя это не поощряется в спецификацией ECMAScript 3 и запрещено в ECMAScript 5, многие реализации интерпретируют числовую строку, начинающуюся с 0, как восьмеричную. Следующий пример может иметь как восьмеричный, так и десятичный результат. Чтобы избежать непредвиденного результата, всегда указывайте основание системы счисления.

parseInt("0e0"); 
parseInt("08"); 

ECMAScript 5 устраняет восьмеричную интерпретацию

Спецификация ECMAScript 5 функции parseInt больше не разрешает трактовать в восьмеричной системе счисления строки, начинающиеся с 0. ECMAScript 5 провозглашает:

Функция parseInt производит целочисленное значение в результате интерпретации содержимого строкового аргумента в соответствии с указанным основанием системы счисления.(\-|\+)?([0-9]+|Infinity)$/.test(value)) return Number(value); return NaN; } console.log(filterInt(‘421’)); console.log(filterInt(‘-421’)); console.log(filterInt(‘+421’)); console.log(filterInt(‘Infinity’)); console.log(filterInt(‘421e+0’)); console.log(filterInt(‘421hop’)); console.log(filterInt(‘hop1.61803398875’)); console.log(filterInt(‘1.61803398875’));

BCD tables only load in the browser

Утилиты для конвертации двоичных файлов в текст HEX дампа | pc

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

const unsigned char __256x64_greyscale_4bit_bmp[] = {
  0x42, 0x4d, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00,
  0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00,
  ...
  0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00
};

Задача вроде бы простая, но самому писать утилиту конвертации не хочется. Какие есть готовые программы, которые позволяют получить текстовый дамп двоичного файла?

1. bmptoc.exe.
2. bin2C компании Segger.
3. hextools.
4. xxd Linux.

Примечание: все описываемые утилиты можно скачать в архиве по ссылке [1].

Обратное преобразование — из HEX-дампа в двоичный файл — позволяют делать утилиты hextools и xxd.

[bmptoc.exe]

Это простая утилита с открытым исходным кодом. Она предназначена для вывода HEX-дампа растра монохромных файлов BMP, вырезая заголовок (что удобно для создания знакогенераторов), и также может выводить HEX-дамп всего файла целиком (опция -noheader). При запуске без опций утилита выведет экран подсказки.

Simple BMP to dump converter utility.
Usage: bmptoc.exe filename[.bmp] [outputfilename] [-raw] [-noheader] [-i]
If outputfilename omitted, dump filename[.bmp] to console.
-raw option mean no cut additional line aligment bytes.
-noheader simply convert source as binary file.
-i inverse.

Если имя входного файла опущено, то HEX-дамп будет выведен в окно консоли. Опция -raw оставляет в HEX-дампе завершающие нулевые байты выравнивания файла BMP (эти байты не несут никакой полезной информации, они нужны только для подгонки размера файла формата BMP под кратность 4 байтам). Опция -noheader отключает анализ заголовка файла BMP, при этом в HEX-дамп попадут все байты вместе с заголовком (эта опция позволяет конвертировать в HEX-дамп любые файлы, не только файлы BMP). Опция -i инвертирует монохромную графику при выводе в HEX-дамп.

[bin2C]

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

Bin2C.exe (c) 2002 - 2015 SEGGER Microcontroller --- www.segger.com
Usage:
Bin2C < infile > < outfile >
where < infile >  is the input binary (or text) file (with extension) and
      < outfile > is the name (without extension) of the .c and .h files to create
.
Example:
Bin2C index.html index
Press any key to exit...

Для конвертации нужно обязательно указать и имя входного, и имя выходного файла (без расширения). Пример:

Bin2C.exe 256×64-greyscale-4bit.bmp 256×64-greyscale-4bit

В результате будет сформировано 2 файла — файл модуля с именем выходного файла и расширением *.c, и файл заголовка с расширением *.h. Имя для массива будет автоматически сгенерировано из имени входного файла.

[hextools]

В пакет утилит hextools (они с открытым исходным кодом) входят 2 программы: hexdump.exe и hex2bin.exe. Первая позволяет получить HEX-дамп файла, а вторая позволяет получить обратное преобразование.

[xxd]

Эта утилита пришла из мира xNix (см. man xxd). Есть порт на Windows [1]. Подсказку по опциям можно получить командой xxd -h.

c:\temp>xxd -h
Usage:
       xxd [options] [infile [outfile]]
    or
       xxd -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]
Options:
    -a          toggle autoskip: A single '*' replaces nul-lines. Default off.
    -b          binary digit dump (incompatible with -ps,-i,-r). Default hex.
    -c cols     format < cols > octets per line. Default 16 (-i: 12, -ps: 30).
    -E          show characters in EBCDIC. Default ASCII.
    -g          number of octets per group in normal output. Default 2.
    -h          print this summary.
    -i          output in C include file style.
    -l len      stop after < len > octets.
    -ps         output in postscript plain hexdump style.
    -r          reverse operation: convert (or patch) hexdump into binary.
    -r -s off   revert with < off > added to file positions found in hexdump.
    -s [+][-]seek  start at < seek > bytes abs. (or +: rel.) infile offset.
    -u          use upper case hex letters.
    -v          show version: "xxd V1.10 27oct98 by Juergen Weigert (Win32)".

Пример командной строки для получения HEX-дампа (в результате получится текстовый файл 256×64-greyscale-4bit.txt):

xxd 256×64-greyscale-4bit.bmp >256×64-greyscale-4bit.txt

Пример командной строки для обратного преобразования (из HEX-дампа будет получен двоичный файл):

xxd -r 256×64-greyscale-4bit.txt 256×64-greyscale-4bit.bmp

Подробную документацию по использованию xxd см. в статье [3].

[Ссылки]

1. 151212bin2c-utils.zip.
2. Подготовка растровых картинок для индикатора OLED WEX025664.
3. man xxd (1).

Двоичный ⇄ шестнадцатеричный преобразователь с шагами

Метод шестнадцатеричного преобразования в двоичное

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

шаг 1: Разделите цифры данного шестнадцатеричного числа, если их больше 1.
шаг 2: Найдите эквивалентное двоичное число для каждой цифры шестнадцатеричного числа, добавьте 0 слева, если какой-либо из двоичных эквивалентов короче 4 бит.
шаг 4: Записать двоичные числа всех групп вместе, поддерживая одинаковый порядок групп, обеспечивая эквивалентный двоичный код для данного шестнадцатеричного числа.

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

Задача
Преобразуйте шестнадцатеричный код 9DB.A5 16 в его двоичный эквивалент.

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

Таблица преобразования для десятичной, двоичной, восьмеричной и шестнадцатеричной систем счисления
Десятичное двоичный восьмеричное шестигранник
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 С
13 1101 15 D
14 1110 16 E
15 1111 17 F
Пользователи могут использовать вышеуказанный конвертер, работать с шагами, решенными примерами и таблицей преобразования, чтобы изучить, попрактиковаться и проверить, как эффективно выполнять преобразование двоичного кода в шестнадцатеричный и шестнадцатеричный в двоичный.»;

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

Просмотры сообщений: 5 853

Маршрутизация и коммутация CCNA
<< Курс по основам IP и сети
>> Раздел

Десятичного, двоичного и шестнадцатеричного преобразования таблица разделов Image Source

How to Convert Binary to Hexadecimal покажет вам, как преобразовать двоичное в шестнадцатеричное, используя простые шаги. Я покажу вам на примерах, как легко выполнить преобразование двумя известными способами.Итак, как только вы освоите преобразование, вы почувствуете больше уверенности, чтобы перейти к шагам преобразования в шестнадцатеричном формате. Стоит иногда упоминать сходство преобразования между 10, 2 и 16 базовыми системами, что упростит понимание и запоминание.

Преобразование двоичного числа в шестнадцатеричное

Например, Преобразовать двоичное 10001110 в шестнадцатеричное

Метод 1:

Шаг 1: , начиная справа от двоичной строки: разделите строку на 2 полубайта: 1 полубайт полубайт 1110 и 2 полубайт -й полубайт 1000.Добавьте только ON мест:

  128 64 32 16 8 4 2 1
   1 1 1 0  
  128 64 32 16 8 4 2 1
   1 0 0 0
  

Добавьте только ON мест

1 st Полубайт: 111 0 = 14 = E

2 nd Полубайт: 1 000 = 8

Шаг 2: Всегда записывайте свой шестнадцатеричный ответ, начиная с ПОСЛЕДНИЙ шестнадцатеричный : 8E

Следовательно, 10001110 равно 8E Hex.

Примечание. Метод 1 более быстрый и более рекомендуемый, чем метод 2.

Метод 2:

Шаг 1: преобразовать двоичную строку в D в первую очередь ; запишите двоичную диаграмму.

  128 64 32 16 8 4 2 1
     1 0 0 0 1 1 1 0  

Добавьте только ON мест: 128 + 8 + 4 + 2 = 142

Шаг 2: Теперь преобразуйте десятичное число 142 в шестнадцатеричное.Запишите шестнадцатеричную таблицу и разделите 142 на 16.

142/16 = 8 единиц по 16 на месте 16, с оставшимися 14 единицами на месте 1.

  256 16 1
     0 8 14  

Следовательно, 10001110 равно 8E Hex.

Преобразование двоичного числа 11101 в шестнадцатеричное

Метод 1:

Шаг 1: , начиная с правой части двоичной строки: разделите строку на 2 полубайта.Подключите 1 и 2 полубайт; добавить только ON мест:

  128 64 32 16 8 4 2 1
   1 1 0 1
  
  128 64 32 16 8 4 2 1
                   0 0   0   1
  

1 st Полубайт: 11 0 1 = 13 = D

2 nd Полубайт: 000 1 = 1

Шаг 2: Всегда записывайте свой шестнадцатеричный ответ, начиная с ПОСЛЕДНИЙ шестнадцатеричный : 1D

Следовательно, 11101 двоичный код равен 1D Hex.

Метод 2:

Шаг 1: Преобразуйте двоичную строку в Сначала в десятичной системе счисления . Запишите двоичную диаграмму.

  128 64 32 16 8 4 2 1
     0 0 0 1 1 1 0 1
  

Добавьте только ON мест: 16 + 8 + 4 + 1 = 29

Шаг 2: Теперь преобразуйте десятичное число 29 в шестнадцатеричное. Разделить на 16:29/16 = 1, остаток от 13

  256 16 1
     0 1 13  

Следовательно, 11101 двоичный код равен 1D Hex.

Преобразовать 101011 двоичное в шестнадцатеричное

Метод 1:

Шаг 1: , начиная с правой стороны двоичной строки: разбивает строку на 2 полубайта; добавляйте только ON мест в каждый полубайт.

Примечание: к настоящему времени вы сможете добавить ON разрядов для каждого полубайта без двоичной диаграммы.

1 st Полубайт: 1 0 11 = 11 = B

2 nd Полубайт: 00 1 0 = 2

Шаг 2: Всегда записывайте свой шестнадцатеричный ответ, начиная с ПОСЛЕДНИЙ шестнадцатеричный : 2B

Следовательно, 101011 двоичный код равен 2B Hex.

Метод 2:

Шаг 1: Преобразуйте двоичную строку в Сначала в десятичной системе счисления . Напишите двоичную диаграмму.

  128 64 32 16 8 4 2 1
     0 0 1 0 1 0 1 1
  

Ad только ON мест: 32 + 8 + 2 + 1 = 43

Шаг 2: Теперь преобразуйте десятичное число 43 в шестнадцатеричное. Разделите 43 на основание 16, чтобы получить его в Hex.

43/16 = 2 с остатком 11. У нас есть 2 единицы по 16 и 11 единиц по 1.

  256 16 1
   0 2 11  

Следовательно, 101011 двоичный код равен 2B Hex.

Преобразовать двоичное 1101111 в шестнадцатеричное

Метод 1:

Шаг 1: , начиная с правой стороны двоичной строки: разделите строку на 2 полубайта; добавляйте только ON мест в каждый полубайт.

1 st Полубайт: 1111 = 15 = F

2 nd Полубайт: 0 11 0 = 6

Шаг 2: Всегда записывайте свой шестнадцатеричный ответ, начиная с ПОСЛЕДНИЙ шестнадцатеричный : 6F

Следовательно, 1101111 двоичный код равен 6F Hex.

Метод 2:

Шаг 1: преобразовать двоичную строку в Decimal First .

  128 64 32 16 8 4 2 1
     0 1 1 0 1 1 1 1
  

Добавьте только ON мест: 64 + 32 + 8 + 4 + 2 + 1 = 111

Шаг 2: Теперь преобразуйте десятичное число 111 в шестнадцатеричное. 111/16 = 6 с остатком от 15

  16 1
    6 15
  

Следовательно, 1101111 двоичный код равен 6F Hex.

Преобразовать 100111010101011 двоичное в шестнадцатеричное

Шаг 1: , начиная с правой стороны двоичной строки: разбить строку на полубайты; добавляйте только ON мест в каждый полубайт.

1 st Полубайт: 1 0 11 = 11 = B

2 nd Полубайт: 1 0 1 0 = 10 = A

3 rd Полубайт: 111 0 = 14 = E

4 th Полубайт: 0 1 00 = 4

Шаг 2: Всегда записывайте свой шестнадцатеричный ответ, начиная с ПОСЛЕДНИЙ шестнадцатеричный : 4EAB

Следовательно, 100111010101011 двоичный код равен 4EAB Hex.

Метод 2:

Шаг 1: преобразовать двоичную строку в Сначала десятичное : написать двоичную диаграмму для размещения длинной двоичной строки.

  16384 8192 4096 2048 1024 512 256  128 64 32 16 8 4 2 1
     1 0 0 1 1 1 0   1 0 1 0 1 0 1 1  

Добавьте только ON мест:

16384 + 2048 + 1024 + 512 + 128 + 32 + 8 + 2 + 1 = 20139

Шаг 2: Теперь преобразуйте десятичное число 20139 в шестнадцатеричное.Разделите 20139 на основе шестнадцатеричной диаграммы ниже, поскольку 20 139 больше, чем 4096, я добавил 65 536 знаков для большей ясности.

Отдел Шаги:

а. Поскольку 65536 больше, чем 20139, пропустите его и перейдите к следующему месту.

г. 20139/4096 = 4 единицы по 4096 с остатком 3755.

г. 3755/256 = 14 единиц 256 с остатком 171.

г. 171/16 = 10 единиц по 16 с оставшимися 11 единицами, которые идут на значение 1 с.

  65536 4096 256 16 1
   0 4 14 10 11  

При работе с шестнадцатеричной диаграммой всегда опускайте левые ведущие нули; напишите свой шестнадцатеричный ответ, начиная с слева . 4, 14 (E), 10 (A) и 11 равно (B)

Следовательно, 100111010101011 равно 4EAB.

Примечание: 1-й метод работает быстрее при работе с длинными двоичными строками.

Двоично-десятичная и шестнадцатеричная диаграмма

После этой практики вы должны быть в состоянии знать наизусть десятичное значение полубайтов от 0000 (0) до 1111 (15) и шестнадцатеричное значение полубайтов от 1010 (A) до 1111 (F).

  • 0 = 0000
  • 1 = 000 1
  • 2 = 00 1 0
  • 3 = 00 11
  • 4 = 0 1 00
  • 5 = 0 1 0 1
  • 6 = 0 11 0
  • 7 = 0 111
  • 8 = 1 000
  • 9 = 1 00 1
  • 10 = 1 0 1 0 = A
  • 11 = 1 0 11 = B
  • 12 = 11 00 = C
  • 13 = 11 0 1 = D
  • 14 = 111 0 = E
  • 15 = 1111 = F

По теме

Википедия Двоичный | Математика — это весело | Числа лучше объяснять | Бесплатный онлайн-калькулятор | R&S ICND1 и ICND2 | Введение в сеть | Практический пакет | Компьютерная сеть | Введение в сети | Кто управляет Интернетом | Сетевое самообучающее руководство

Маршрутизация и коммутация CCNA
<< Курс по основам IP и сети
>> Раздел

Десятичного, двоичного и шестнадцатеричного преобразования таблица разделов

Получайте обновления CCNA R&S!

Конвертер двоичного числа в шестнадцатеричный

Конвертер двоичного числа в шестнадцатеричный

В двоичной системе счисления мы можем записывать числа в форме 0100110, где только 2 цифры используются в целом числе (1 и 0).

Это система счисления с основанием 2, поэтому в ней могут быть только две цифры.
В то время как в случае шестнадцатеричной системы вы можете записывать числа в форме 3AC36B1.
Шестнадцатеричная система счисления — это система счисления с основанием из 16 и имеющая 16 возможных цифр плюс символы для представления числа.
Числа находятся в диапазоне от 0 до 9, а символы — A, B, C, D, E и F.
Инструмент преобразования двоичного числа в шестнадцатеричный можно использовать для преобразования любого двоичного числа в шестнадцатеричную систему счисления.

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

Этот инструмент весьма эффективен и удобен в области математики и компьютерных наук.
Процесс преобразования двоичных чисел в шестнадцатеричные
Процесс преобразования двоичных чисел в десятичные очень прост.
Это преобразование основано на делении двоичного числа на 4-значные блоки справа налево.
Например, если число 10100011, то будет два блока, каждый из которых содержит 4 цифры двоичного числа.
1010 0011
После преобразования их в блоки, двоичную таблицу в шестнадцатеричную можно использовать для вычислений.

Ниже приведена таблица такого рода преобразования:

0 0100

900

0

065
Двоичная система счисления Шестнадцатеричная система счисления

0000

0

0001 9000

1

0010

2

0011

3

0 0100

0101

5

0110

6

0111

7

8

1001

9

1010

A

0 1011

1100

C

1101

D

1110

E

E

0

F

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

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

Возможно преобразование из двоичного в шестнадцатеричное и получение результата, состоящего только из букв.
Например, двоичное число 110010111010 и его 4-значный блок будут следующими:

1100 1011 1010

И эти числа равны следующим шестнадцатеричным числам из таблицы:

1100 = C
1011 = B
1010 = A

Итак, ответ « CBA » состоит только из букв, а не из цифр, что немного сбивает с толку.
Чтобы избежать каких-либо неудобств, используйте инструмент, чтобы сэкономить свое время и сразу же воспользоваться бесплатным расчетом.

Двоичный в HEX | Двоичный преобразователь как транслятор двоичного кода

Шестнадцатеричный код, часто сокращаемый как шестнадцатеричный, — это система, основанная на базе 16, которая используется для упрощения представления двоичного кода (двоичное представление). Шестнадцатеричный преобразователь в двоичную систему счисления представляет собой систему счисления из 16 символов, разработанную таким образом, чтобы можно было записать 8-битное двоичное число.

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

Стандартная система счисления называется десятичной (основание 10), которая может иметь следующие значения: 0,1,2,3,4,5,6,7,8,9. Шестнадцатеричный преобразователь использует десятичные числа и отображает шесть дополнительных символов A B C D E F. Буквы, взятые из английских алфавитов, используемые в качестве числовых символов, не соответствуют значениям, превышающим десять.Например, шестнадцатеричный «A» представляет десятичное число 10, а шестнадцатеричное «F» — десятичное число 15.

Совет для профессионалов [1 # шестнадцатеричный в текст 2 # шестнадцатеричный в десятичный 3 # шестнадцатеричный в двоичный]

Люди в основном используют десятичную систему, поскольку машины обычно используют систему двоичного представления языка. Это могло быть совпадением, что у слова «люди» десять пальцев (десять цифр). Однако компьютеры зависят только от включения и выключения, называемого двоичной цифрой.

Старший бит

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

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

Формация называется восьмеричной, которая формирует 3-битные цифры как 000 = 0; 001 = 1; 010 = 2; 011 = 3; 100 = 4; 101 = 5; 110 = 6 и 111 = 7.

Кроме того, преобразовать из:

Таблица двоичных, шестнадцатеричных и ASCII значений,
Двоичный Шестнадцатеричный ASCII
00000000 00 NUL
00000001 01 SOH
00000010 02 STX
00000011 03 ETX
00000100 04 EOT
00000101 05 ENQ
00000110 06 ACK
00000111 07 BEL
00001000 08 BS
00001001 09 HT
00001010 0A LF
00001011 VT
00001100 0C FF
00001101 0D CR
00001110 0E SO
00001111 0F SI
00010000 10 DLE
00010001 11 DC1
00010010 12 DC2
00010011 13 DC3
00010100 14 DC4
00010101 15 НАК
00010110 16 SYN
00010111 17 ETB
00011000 18 CAN
00011001 19 EM
00011010 1A ПОД
00011011 ESC
00011100 FS
00011101 1D GS
00011110 1E RS
00011111 1 этаж США
00100000 20 Космос
00100001 21 !
00100010 22 «
00100011 23 #
00100100 24 $
00100101 25 %
00100110 26 и
00100111 27
00101000 28 (
00101001 29 )
00101010 2A *
00101011 +
00101101 2D
00101110 2E .
00101111 2F /
00110000 30 0
00110001 31 1
00110010 32 2
00110011 33 3
00110100 34 4
00110101 35 5
00110110 36 6
00110111 37 7
00111000 38 8
00111001 39 9
00111010 3A :
00111011 3B ;
00111100 3C <
00111101 3D =
00111110 3E >
00111111 3F ?
01000000 40 @
01000001 41 A
01000010 42 B
01000011 43 С
01000100 44 D
01000101 45 E
01000110 46 F
01000111 47 G
01001000 48 H
01001001 49 I
01001010 4A Дж
01001011 4B К
01001100 4C л
01001101 4D M
01001110 4E N
01001111 4F O
01010000 50 -P
01010001 51 Q
01010010 52 R
01010011 53 S
01010100 54 т
01010101 55 U
01010110 56 В
01010111 57 Вт
01011000 58 х
01011001 59 Y
01011010 5A Z
01011011 [
01011100 5C \
01011101 5D ]
01011110 5E ^
01011111 5F _
01100000 60 `
01100001 61 a
01100010 62 б
01100011 63 с
01100100 64 г
01100101 65 e
01100110 66 f
01100111 67 г
01101000 68 ч
01101001 69 i
01101010 6A Дж
01101011 к
01101100 6C л
01101101 6D м
01101110 6E n
01101111 6F или
01110000 70 p.
01110001 71 q
01110010 72 r
01110011 73 с
01110100 74 т
01110101 75 u
01110110 76 v
01110111 77 Вт
01111000 78 х
01111001 79 y
01111010 7A z
01111011 7B {
01111100 7C |
01111101 7D }
01111110 7E ~
01111111 7F DEL

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

Сообщить об этом объявлении

Двоичная система счисления

Машины используют двоичную систему счисления для выполнения вычислений.Это число имеет основание 2. Следовательно, в этой системе 2 цифры — 0 и 1. Каждая цифра в двоичной системе счисления представляет собой степень основания (2).

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

Основание шестнадцатеричной системы счисления — 16. Следовательно, в этой системе 16 символов или цифр. Первые десять цифр аналогичны десятичной системе счисления — 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Остальные шесть цифр представлены символами A, B, C, D. , E и F, представляющие десятичные числа 10, 11, 12, 13, 14 и 15 соответственно.Самая большая единственная цифра — F (на 1 меньше, чем основание 16). Каждая цифра в шестнадцатеричной системе счисления представляет собой степень основания (16). Эта система счисления используется для представления цветов в программировании HTML; FF0000 представляет красный цвет, 00FF00 представляет зеленый цвет, 0000FF представляет синий цвет и т. Д.

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

Давайте разберемся с преобразованием, выполнив следующие шаги —

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

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

Шаг 1) Разделите двоичные цифры на группы по 4, начиная справа (LSD).

1011 1010

Шаг 2) Преобразуйте каждую группу в шестнадцатеричную цифру.

 1011 = 1x2  3  + 0x2  2  + 1x2  1  + 1x2  0 
     = 8 + 0 + 2 + 1
     = 11  10 
     = В  16 
1010 = 1x2  3  + 0x2  2  + 1x2  1  + 0x2  0 
     = 8 + 0 + 2 + 0
     = 10  10 
     = А  16  

Следовательно, 10111010 2 = BA 16

Таблица преобразования двоичного числа в шестнадцатеричный

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

Двоичные числа Шестнадцатеричные числа
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 С
1101 D
1110 E
1111 F

Конвертируйте шестнадцатеричные и двоичные числа в своей голове!

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

Двоичный и шестнадцатеричный?

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

Числовые базы

Числовая база — это количество значений, которые могут быть сохранены в одной цифре.Например, в базе 10 (то есть то, что мы обычно думаем о числах) одна цифра может хранить 10 различных значений (0-9).

Двоичный

Двоичная система — это система счисления с основанием 2. Это означает, что каждая цифра может хранить только 2 значения (обычно обозначаемых как 1 или 0). Поскольку основание очень маленькое, двоичные числа могут быть очень длинными и неприятными для чтения (число 51 в двоичном формате — это 00110011). В информатике мы обычно группируем эти числа в группы по 8 (также называемые байтами).

Шестнадцатеричный

Точно так же шестнадцатеричная система — это просто система счисления с другим основанием: 16.Как сохранить в одной цифре более десяти значений? Используем буквы! Другими словами, число 10 в шестнадцатеричном формате становится A, 11 становится B, 12 становится C, 13 становится D, 14 становится E, а 15 становится F. Это также означает, что в шестнадцатеричном формате число 10 фактически является числом 16 в базе. 10 (обычно мы бы сказали 16 в десятичной системе счисления).

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

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

Что я имею в виду? Взгляните на таблицу ниже.

Десятичный 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Двоичный 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Шестигранник 0 1 2 3 4 5 6 7 8 9 A B С D E F

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

Чтобы дать вам пример, если мы знаем, что число 0101 в двоичном формате эквивалентно 5 в шестнадцатеричном формате, а 1111 в двоичном формате эквивалентно F в шестнадцатеричном формате, то мы можем легко определить, что 01011111 в двоичном формате эквивалентно 5F в шестнадцатеричном формате, а двоичный файл 11110101 будет иметь шестнадцатеричный формат F5. Может быть сложно узнать, что такое шестнадцатеричное число F5 в десятичном формате (245), но нам не требуется , чтобы знать это для выполнения этих преобразований!

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

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

Степени 2

Каждая из четырех отдельных двоичных цифр является степенью двойки.

Десятичный 0 1 2 4 8
Двоичный 0000 0001 0010 0100 1000
Шестигранник 0 1 2 4 8

Если вы видите серию из четырех двоичных цифр только с одной единицей, то вы просто запускаете счет справа налево по степеням двойки.Поначалу это может сбивать с толку, но я обещаю, что потребуется всего несколько раз, прежде чем вы действительно хорошо запомните 0100 = 4, 0010 = 2 и так далее.

Заполнение других номеров

Чтобы заполнить пробелы, мы разбиваем число на серию двоичных цифр только с одной единицей и складываем эти значения. Что я имею в виду? Что ж, давайте посмотрим на пример: 0101.

0101 можно разбить на числа 0100 (4) и 0001 (1). Затем мы складываем эти два числа, чтобы получить окончательное значение: 5.

Давайте попробуем еще раз с номером 1011. Его можно разбить на 1000 (8), 0010 (2) и 0001 (1). Эти три числа складываются в 11, что в шестнадцатеричном формате будет B.

Собираюсь в другую сторону

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

Это немного сбивает с толку и неудобно писать, поэтому давайте просто рассмотрим пример: D.

Первая двоичная цифра (1000) — 8.D больше 8, поэтому мы знаем, что первая цифра в двоичном формате — 1.

Мы вычтем 8 из D, оставив 5, и перейдем к следующей двоичной цифре: 4 (0100).

5 больше 4, поэтому мы вычитаем четыре и отмечаем нашу вторую цифру как 1.

Следующая двоичная цифра — 2 (0010), которая больше, чем наш текущий остаток, поэтому мы знаем, что наша третья двоичная цифра — 0.

Наконец, у нас есть число 1 и наша двоичная цифра 1, поэтому мы знаем, что наша последняя цифра — 1.

Если вам удалось последовать этому длинному примеру, вы должны были получить число 1101 вместо D!

Краткое изложение выглядит следующим образом

Остаток Текущая двоичная цифра Расчет двоичных цифр
D 1000 1XXX
5 0100 11XX
1 0010 110X
1 0001 1101

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

Ищите числа, которые равны +/- 1 от степени двойки.

Такие числа, как 0101 (5) и 0111 (7), очень легко получить, используя их ближайшую степень двойки.

Думайте в обратном направлении сверху вниз

1111 (F) — это число, которое очень легко преобразовать, и может быть полезно просто вычесть из него заданную цифру (например, 1101 (F — 2) равно D, 1011 (F — 4) равно B)

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

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

Двоичный в шестнадцатеричный

  1. 01001100 11000011
  2. 11100101 00101101
  3. 10110011 10110100
  4. 00110110 10010001

Шестнадцатеричный в двоичный

  1. 3F C5
  2. DD 13
  3. 4A 72
  4. 11 01

Спасибо, что нашли время, чтобы прочитать это, и, пожалуйста, дайте мне знать, если я что-то напутал в этом посте, или если у вас есть лучший способ мысленного преобразования двоичного кода в шестнадцатеричный!

Функция ДВОЙН2ШЕСТР.

В этой статье описываются синтаксис формулы и использование функции ДВИГН2ШЕСТН., в Microsoft Excel.

Описание

Преобразует двоичное число в шестнадцатеричное.

Синтаксис

BIN2HEX (число, [разряды])

Аргументы функции ДВОЙН2ШЕСТНЕСТ.

  • Номер Обязательно. Двоичное число, которое нужно преобразовать. Номер не может содержать более 10 знаков (10 бит).Самый старший бит числа — это знаковый бит. Остальные 9 бит — это биты величины. Отрицательные числа представлены с использованием записи в дополнительном коде.

  • Места Необязательно. Количество используемых символов. Если разряды опущены, BIN2HEX использует минимально необходимое количество символов. Места полезны для заполнения возвращаемого значения ведущими нулями.

Примечания

  • Если число не является допустимым двоичным числом или если число содержит более 10 символов (10 битов), BIN2HEX возвращает # ЧИСЛО! значение ошибки.

  • Если число отрицательное, BIN2HEX игнорирует разряды и возвращает 10-значное шестнадцатеричное число.

  • Если для BIN2HEX требуется больше символов, чем разрядов, он возвращает # ЧИСЛО! значение ошибки.

  • Если количество мест не является целым числом, оно усекается.

  • Если разряды не являются числовыми, БИН2ШЕСТ. Возвращает # ЗНАЧ! значение ошибки.

  • Если разряды отрицательны, БИН2ХЕХ возвращает # ЧИСЛО! значение ошибки.

Пример

Скопируйте данные примера из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы формулы отображали результаты, выберите их, нажмите F2, а затем нажмите Enter. При необходимости вы можете настроить ширину столбца, чтобы увидеть все данные.

Формула

Описание

Результат

= BIN2HEX (11111011, 4)

Преобразует двоичное 11111011 в шестнадцатеричное с 4 символами

00FB

= BIN2HEX (1110)

Преобразует двоичное 1110 в шестнадцатеричное

E

= BIN2HEX (1111111111)

Преобразует двоичное 1111111111 в шестнадцатеричное

FFFFFFFFFF

.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *