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

Курс по основам компьютерных сетей на базе оборудования Cisco. Этот курс поможет вам подготовиться к экзаменам CCENT/CCNA, так как за его основу взят курс Cisco ICND1

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей и протокол сетевого уровня IP, а если быть более точным, то его версию IPv4.

На первый взгляд тема двоичных чисел и двоичной системы счисления не имеет отношения к протоколу IP, но если вспомнить, что компьютеры работают с нулями и единицами, то оказывается, что двоичная система и ее понимание — это основа основ, нам нужно научиться переводить числа из двоичной системы счисления в десятичную и наоборот: из десятичной в двоичную. Это нам поможет лучше понять протокол IP, а также принцип работы масок сети переменной длины. Давайте приступать!

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

Оглавление первой части: «Основы взаимодействия в компьютерных сетях».

Оглавление четвертой части: «Сетевой уровень: протокол IP и его версия IPv4».

4.4.1 Введение

Прежде чем мы начнем, стоит вообще объяснить зачем нужна эта тема сетевому инженеру.

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

Так-то оно так, но IP-калькулятор не всегда под рукой, это причина номер раз.

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

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

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

Но при помощи листа бумаги и ручки вам стоит научиться осуществлять перевод.

4.4.2 Десятичные цифры и числа, разряды в числах

Давайте начнем с простого и поговорим про двоичные цифры и числа, вы же знаете, что цифры и числа – это две разные вещи.

Цифра – это специальный символ для обозначения, а число – это абстрактная запись, означающая количество. Например, чтобы записать, что у нас пять пальцев на руке мы можем использовать римские и арабский цифры: V и 5.

В данном случае пять является одновременно и числом, и цифрой. А, например, для записи числа 20 мы используем две цифры: 2 и 0.

Итого, в десятичной системе счисления у нас есть десять цифр или десять символов (0,1,2,3,4,5,6,7,8,9), комбинируя которые мы можем записывать различные числа.

Каким принципом мы руководствуемся, используя десятичную систему счисления? Да все очень просто, мы возводим десятку в ту или иную степень, для примера возьмём число 321. Как его можно записать по-другому, да вот так: 3*102+2*101+1*100.

Таким образом получается, что число 321 представляет собой три разряда:

  1. Цифра 3 означает старший разряд или в данном случае это разряд сотен, иначе их количество.
  2. Цифра 2 стоит в разряде десятков, у нас два десятка.
  3. Цифра один относится к младшему разряду.

То есть в данной записи двойка это не просто двойка, а две десятки или два раза по десять. А тройка это не просто тройка, а три раза по сто. Получается такая зависимость: единица каждого следующего разряда в десять раз больше единицы предыдущего, ведь, что такое 300 – это три раза по сто. Отступление по поводу десятичной системы счисление было нужно, чтобы проще понять двоичную.

4.4.3 Двоичные цифры и числа, а также их запись

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

За исключением чисел 0 и 1, ноль в двоичной системе счисления равен нулю в десятичной, аналогично и для единицы.

Иногда, чтобы не перепутать в какой системе счисления записано число, используют суб-индексы: 26710, 1010012, 47128. Число в суб-индексе указывает на систему счисления.

Для записи двоичных чисел могут быть использованы символы 0b и &(амперсанд): 0b10111, &111.

Если в десятичной системе счисления, чтобы произнести число 245 мы воспользуемся вот такой конструкцией: двести сорок пять, то в двоичной системе счисления чтобы назвать число, нам нужно произнести цифру из каждого разряда, например, число 1100 в двоичной системе счисления следует произносить не как тысяча сто, а как один, один, ноль, ноль. Давайте посмотрим на запись чисел от 0 до 10 в двоичной системе счисления:

Таблица 4.4.1 Числа двоичной и десятичной системы счисления

Думаю, логика должна быть уже понятна. Если в десятичной системе счисления для каждого разряда у нас было доступно десять вариантов (от 0 до 9 включительно), то в двоичной системе счисления в каждом из разрядов двоичного числа у нас только два варианта: 0 или 1.

Для работы с IP-адресами и масками подсети нам достаточно натуральных чисел в двоичной системе счисления, хотя двоичная система позволяет записывать дробные и отрицательные числа, но нам это без надобности.

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

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

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

В данном случае 61 – это делимое, в качестве делителя у нас всегда будет двойка, а частное (результат деления) мы делим снова на два, продолжаем деление до тех пор, пока в частном не окажется 1, эта последняя единица и будет крайним левым разрядом. Рисунок ниже это демонстрирует.

4.4.1 Деление в столбик для перевода числа из десятичной системы счисления в двоичную

При этом обратите внимание, что число 61, это не 101111, а 111101, то есть выписываем результат с конца. Единицу в последнем частном смысла делить на два нет, поскольку в данном случае используется целочисленное деление, а при таком подходе получается так, как на Рисунке 4.4.2.

4.4.2 Целочисленное деление единицы на двойку

Это не самый быстрый способ перевода числа из двоичной системы счисления в десятичную. У нас есть несколько ускорителей. Например, число 7 в двоичной системе записывается как 111, число 3 как 11, а число 255 как 11111111. Все эти случаи до безобразия просты.

Дело в том, что числа 8, 4, и 256 являются степенями двойки, а числа 7, 3 и 255 на единицу меньше этих чисел. Так вот для числа, которые на единицу меньше, чем число равное степени двойки, действует простое правило: в двоичной системе такое десятичное число записывается количеством единиц равным степени двойки.

Так, например, число 256 это два в восьмой степени, следовательно, 255 записывается как 11111111, а число 8 это два в третьей степени, а это говорит нам о том, что 7 в двоичной системе счисления будет записано как 111.

Ну а понять, как записать 256, 4 и 8 в двоичной системе счисления тоже не трудно, достаточно просто прибавить единицу: 256 = 11111111 + 1 = 100000000; 8 = 111 + 1 = 1000; 4 = 11 + 1 = 100.
Любой свой результат вы можете проверить на калькуляторе и по началу лучше так и делать.

4.4.3 Проверяем результат перевода на калькуляторе

Как видим, делить мы еще не разучились. И теперь можем двигаться дальше.

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

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

Таблица 4.4.2 Двоичное число и степень

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

1*24+1*23+1*22+1*21+0*20 = 16+8+4+2+0=30

Откроем калькулятор и убедимся, что 30 в десятичной системе счисления, это 11110 в двоичной.

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

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

Таблица 4.4.3 Степень двойки

Нам больше и не нужно, поскольку максимально возможное число, которое можно записать в один байт (8 бит или восемь двоичных значений) равно 255, то есть в каждом октете IP-адреса или маски подсети протокола IPv4 максимально возможное значение — 255. В IP-пакете есть поля, в которых есть значения больше 255, но их нам рассчитывать не нужно.

4.4.6 Сложение, вычитание, умножение двоичных чисел и другие операции с двоичными числами

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

Сложение двоичных чисел

Складывать двоичные числа не так уж сложно: 1+0 =1; 1+1=0 (в дальнейшем дам пояснение); 0+0=0. Это были простые примеры, где использовался лишь один разряд, давайте посмотрим на примеры, где количество разрядов больше, чем один.
101+1101 в десятичной системе это будет 5 + 13 = 18. Давайте посчитаем в столбик.

Таблица 4.4.4 Сложение двоичных чисел в столбик

Результат выделен оранжевым цветом, калькулятор говорит, что мы посчитали верно, можете проверить. Теперь давайте смотреть почему так получилось, ведь вначале я написал, что 1+1=0, но это для случая, когда у нас есть только один разряд, для случаев, когда разрядов больше, чем один, 1+1=10 (или два в десятичной), что логично.

Тогда смотрите, что получается, мы выполняем сложения по разрядам справа налево:

1. 1+1=10, записываем ноль, а единица уходит в следующий разряд.

2. В следующем разряде получается 0+0+1=1 (эта единица пришла к нам из результата сложения на шаге 1).

3. Дальше у нас выражение 1+1=10, поэтому в результат разряда мы пишем 0, а единица уходит в следующий.

4. Тут у нас есть единица только у второго числа, но сюда еще перенеслась, поэтому 0+1+1 = 10.

5. Склеиваем всё воедино:10|0|1|0.

Если лень в столбик, то давайте считать так: 101011+11011 или 43 + 27 = 70. Как тут можно поступить, а давайте смотреть, ведь нам никто не запрещает делать преобразования, а от перемены мест слагаемых сумма не меняется, для двоичной системы счисления это правило также актуально.

  1. 101011 = 101000 + 11 = 101000 + 10 + 1 = 100000 + 1000 + 10 + 1.
  2. 11011 = 11000 + 10 + 1 = 10000 + 1000 + 10 + 1.
  3. 100000 + 10000 + (1000 +1000) + (10+10) + (1+1).
  4. 100000 + (10000 + 10000) + 100 + 10.
  5. 100000 + 100000 +110
  6. 1000000 + 110.
  7. 1000110.

Можете проверить калькулятором, 1000110 в двоичной системе счисления это 70 в десятичной.

Вычитание двоичных чисел

Сразу пример для вычитания одноразрядных чисел в двоичной системе счисления, про отрицательные числа мы не говорили, поэтому 0-1 не берем в расчет: 1 – 0 = 1; 0 – 0 = 0; 1 – 1 = 0.

Если разрядов больше чем один, то тоже все просто, даже никаких столбиков и ухищрений не нужно: 110111 – 1000, это то же самое, что и 55 – 8. В результате мы получим 101111.

И биться сердце перестало, откуда единица в третьем разряде (нумерация слева направо и начинается с нуля)? Да всё просто! Во втором разряде числа 110111 стоит 0, а в первом разряде стоит 1 (если примем, что нумерация разрядов начинается с 0 и идет слева направо), но единица четвертого разряда получается путем сложения двух единиц третьего разряда (получается этакая виртуальная двойка) и от этой двойки мы отнимаем единицу, которая стоит в нулевом разряде числа 1000, ну а 2 — 1 = 1, ну а 1 является допустимой цифрой в двоичной системе счисления.

Умножение двоичных чисел

Нам осталось рассмотреть умножение двоичных чисел, которое реализует за счет сдвига на один разряд влево. Но для начала давайте посмотрим на результаты одноразрядного умножения: 1*1 = 1; 1*0=0 0*0=0. Собственно, всё просто, теперь давайте посмотрим на что-нибудь более сложное. Возьмем числа 101001 (41) и 1100 (12). Умножать будем столбиком.

Таблица 4.4.5 Умножение двоичных чисел в столбик

Если из таблицы непонятно как так получилось, то попробую объяснить словами:

  1. Умножение двоичных чисел удобно делать в столбик, поэтому выписываем второй множитель под первым, если числа с разным количество разрядов, то будет удобнее, если большее число будет сверху.
  2. Следующим шагом умножаем все разряды первого числа на самый младший разряд второго числа. Записываем результат перемножения ниже при этом нужно записать так, чтобы под каждым соответствующим разрядом был записан результат перемножения.
  3. Теперь нам нужно перемножить все разряды первого числа на следующий разряд второго числа и результат записать еще одной строчкой ниже, но этот результат нужно сдвинуть на один разряд влево, если смотреть на таблицу, то это вторая последовательность нулей сверху.
  4. Точно также нужно сделать для последующих разрядов, каждый раз сдвигаясь на один разряд влево, а если смотреть на таблицу, то можно сказать, что на одну клетку влево.
  5. У нас получилось четыре двоичных числа, которые нужно теперь сложить и получить результат. Сложение мы недавно рассмотрели, проблем возникнуть не должно.

В общем-то, операция умножения не такая уж и сложная, нужно лишь немного попрактиковаться.

Операции булевой алгебры

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

Операция «Логическое И» или AND

Операция «Логическое И» или AND эквивалентно умножению одноразрядных двоичных чисел.

Единица в результате «Логического И» будет только в том случае, если оба значения равны единицы, во всех остальных случаях будет ноль.

Операция «Логическое ИЛИ» или OR

Операция «Логическое ИЛИ» или OR работает по следующему принципу: если хотя бы одно значение равно единице, то в результате будет единица.

Операция «Исключающее ИЛИ» или XOR

Операция «Исключающее ИЛИ» или XOR даст нам в результате единицу только в том случае, если один из операндов равен единице, а второй равен нулю. Если оба операнда равны нулю, будет ноль и даже если оба операнда равны единице, в результате получится ноль.

Операция «Логическое отрицание» или NOT

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

Собственно, ничего сложного в булевых операциях нет.

4.4.7 Выводы

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

Источник: https://zametkinapolyah.ru/kompyuternye-seti/4-4-dvoichnye-chisla-i-dvoichnaya-sistema-schisleniya-perevod-chisla-v-dvoichnuyu-sistemu-schisleniya-iz-desyatichnoj.html

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

Для перевода десятичного числа в двоичную систему отдельно переводят дробную и целую части.

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

Например:

В результате.

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

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

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

Например,

Подробно>>

Выполнение арифметических операций в двоичной системе. Подробнее>>

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

Числа, записанные в двоичной системе, требуют большего числа знаков, чем их аналоги в десятичной системе, но при проектировании компьютеров, предназначенных для работы с числами, не превышающими 10 миллионов, оказалось, что легче оперировать с 24-разрядными двоичными числами (т.е. 24 реле или переключателя типа “вкл.” – “выкл.

”), чем с семизначными десятичными числами (реле или переключателями, которые могут находиться в 10 состояниях).

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

Системы счисления, родственные двоичной

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

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

Такими системами являются системы, родственные двоичной.

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

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

В системе счисления с основанием 8 используются цифры: 0, 1, 2, 3, 4, 5, 6, 7.

Над числами в восьмеричной системе счисления можно выполнять арифметические действия.

Подробнее>>

Элементы комбинаторики

обратно

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

Примеры перестановок:

1)распределение n различных должностей среди n человек;

2)расположение n различных предметов в одном ряду.

Сколько различных перестановок можно образовать во множестве? Число перестановок обозначается Pn (читаетсяР из n”).

Чтобы вывести формулу числа перестановок, представим себе n ячеек, пронумерованных числами1,2,…n. Все перестановки будем образовывать, располагая элементы Unв этих ячейках. В первую ячейку можно занести любой из n элементов (иначе: первую ячейку можно заполнить n различными способами).

Заполнив первую ячейку, можно найти n–1 вариантов заполнения второй ячейки. Таким образом, существует n(n–1) вариантов заполнения двух первых ячеек. При заполнении первых двух ячеек можно найти n–2 варианта заполнения третьей ячейки, откуда получается, что три ячейки можно заполнить n(n-1)(n-2) способами.

Продолжая этот процесс, получим, что число способов заполнения n ячеек равно. Отсюда

Pn = n(n – 1)(n – 2)…× 3× 2× 1

Число n(n – 1)(n – 2)…× 3× 2× 1, то есть произведение всех натуральных чисел от 1 до n, называется “n-факториал” и обозначается n! Отсюда Pn =n!

По определению считается: 1!=1; 0!=1.

Пример. Сколько существует вариантов замещения 5-ти различных вакантных должностей 5-ю кандидатами?

.

Размещениями из n элементов по k элементов будем называть упорядоченные подмножества, состоящие из k элементов множества(множества, состоящего из n элементов). Число размещений из n элементов по k элементов обозначается(читается “А из n по k”).

Одно размещение из n элементов по k элементов может отличаться от другого как набором элементов, так и порядком их расположения.

Примеры задач, приводящих к необходимости подсчета числа размещений

1) Сколькими способами можно выбрать из 15 человек 5 кандидатов и назначить их на 5 различных должностей?

2) Сколькими способами можно из 20 книг отобрать 12 и расставить их в ряд на полке?

В задачах о размещениях полагается k

Источник: https://lektsia.com/5x88a6.html

Системы счисления в IP, перевод систем счисления, из двоичной в десятичную, из десятичной в двоичную

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

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

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

Итак, разбираемся в первых двух.

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

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

Десятичная система счисления известна всем нам очень подробно, мы ею пользуемся каждый день (при оплате за транспорт, подсчёте количества штук чего либо, арифметические операции над числами). В десятичную систему счисления входят 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Десятичная система счисления является позиционной системой, потому что зависит от того, в каком месте числа (в каком разряде, на какой позиции) стоит цифра. Т.е. 001 – единица, 010 – это уже десять, 100 – а это сто. Мы видим, что менялась только позиция одной цифры (единицы), а число менялось очень значительно.

В любой позиционной системе счисления позиция цифры представляет собой цифру, помноженную на число основания системы счисления в степени позиции этой цифры. Посмотрите на пример, и станет всё ясно.

Число десятичное 123 = (1 * 10^2) + (2 * 10^1) + (3 * 10^0) = (1*100) + (2*10) + (3*1)

Число десятичное 209 = (2 * 10^2) + (0 * 10^1) + (9 * 10^0) = (2*100) + (0*10) + (9*1)

Двоичная система счисления нам может быть и вовсе не знакома, но поверьте, она намного проще, чем привычная нам десятичная система. В двоичную систему счисления входят всего 2 цифры: 0 и 1. Это сравнимо с лампочкой, когда она не горит – это 0, а когда свет включен – это 1.

Двоичная система счисления, как и десятичная, является позиционной.

Число двоичное 1111 = (1*2^3) + (1*2^2) + (1*2^1) + (1*2^0) = (1*8) + (1*4) + (1*2) + (1*1) = 8 + 4 + 2 + 1 = 15 (десятичное).

Число двоичное 0000 = (0*2^3) + (0*2^2) + (0*2^1) + (0*2^0) = (0*8) + (0*4) + (0*2) + (0*1) = 8 + 4 + 2 + 1 = 0 (десятичное).

Хотели мы того, или нет, но мы уже преобразовали 2 двоичных числа в десятичные. Рассмотрим более подробно дальше.

Из двоичной системы счисления в десятичную систему счисления переводить не сложно, надо выучить степени двойки от 0 до 15, хотя в большинстве случаев будет достаточным от 0 до 7. Это связано с восемью битами каждого октета в ip адресе.

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

Начнем с простых чисел и закончим числами из восьми цифр.

Число двоичное 111 = (1*2^2) + (1*2^1) + (1*2^0) = (1*4) + (1*2) + (1*1) = 4 + 2 + 1 = 7 (десятичное).

Число двоичное 001 = (0*2^2) + (0*2^1) + (1*2^0) = (0*4) + (0*2) + (1*1) = 0 + 0 + 1 = 1 (десятичное).

Число двоичное 100 = (1*2^2) + (0*2^1) + (0*2^0) = (1*4) + (0*2) + (0*1) = 4 + 0 + 0 = 4 (десятичное).

Число двоичное 101 = (1*2^2) + (0*2^1) + (1*2^0) = (1*4) + (0*2) + (1*1) = 4 + 0 + 1 = 5 (десятичное).

Точно таким же образом можно преобразовать любое двоичное число в десятичное.

Число двоичное 1010 = (1*2^3) + (0*2^2) + (1*2^1) + (0*2^0) = (1*8) + (0*4) + (1*2) + (0*1) = 8 + 0 + 2 + 0 = 10 (десятичное).

Число двоичное 10000001 = (1*2^7) + (0*2^6) + (0*2^5) + (0*2^4) + (0*2^3) + (0*2^2) + (0*2^1) + (1*2^0) = (1*128) + (0*64) + (0*32) + (0*16) + (0*8) + (0*4) + (0*2) + (1*1) = 128 + 0 + 0 + 0 + 0 + 0 + 0 + 1 = 129 (десятичное).

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

Число двоичное 10000001 = (1*2^7) + (1*2^0) = (1*128) + (1*1) = 128 + 1 = 129 (десятичное).

Число двоичное 10000011 = (1*2^7) + (1*2^1) + (1*2^0) = (1*128) + (1*2) + (1*1) = 128 + 2 + 1 = 131 (десятичное).

Число двоичное 01111111 = (1*2^6) + (1*2^5) + (1*2^4) + (1*2^3) + (1*2^2) + (1*2^1) + (1*2^0) = (1*64) + (1*32) + (1*16) + (1*8) + (1*4) + (1*2) + (1*1) = 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127 (десятичное).

Число двоичное 11111111 = (1*2^7) + (1*2^6) + (1*2^5) + (1*2^4) + (1*2^3) + (1*2^2) + (1*2^1) + (1*2^0) = (1*128) + (1*64) + (1*32) + (1*16) + (1*8) + (1*4) + (1*2) + (1*1) = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 (десятичное).

Число двоичное 01111011 = (1*2^6) + (1*2^5) + (1*2^4) + (1*2^3) + (1*2^1) + (1*2^0) = (1*64) + (1*32) + (1*16) + (1*8) + (1*2) + (1*1) = 64 + 32 + 16 + 8 + 2 + 1 = 123 (десятичное).

Число двоичное 11010001 = (1*2^7) + (1*2^6) + (1*2^4) + (1*2^0) = (1*128) + (1*64) + (1*16) + (1*1) = 128 + 64 + 16 + 1 = 209 (десятичное).

Вот и справились. Теперь переведём всё обратно из двоичной в десятичную.

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

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

Смотрите примеры, и вопросы отпадут сами собой.

Число десятичное 7: 7-4=3 – ближайшее меньшее (или равное) число к 7 из степеней двойки это 4 (2^2). Вычитаем из 7 число 4, получаем 3. Затем 3-2=1 – ближайшее меньшее (или равное) число к 3 из степеней двойки это 2 (2^1). Вычитаем из 3 число 2, получаем 1.

1-1=0 – ближайшее меньшее (или равное) число к 1 из степеней двойки это 1 (2^0). Вычитаем из 1 число 1, получаем 0. Всего из нашего числа мы вычли 4, 2 и 1, т.е. 2^2, 2^1 и 2^0. Ставим единицы в разряды по степеням двоек – 111.

Если мы считаем октетом, то надо добавить нули – 00000111. Готово.

Чтобы не сбивать вас, уберём слова:

Число десятичное 10: 10-8=2; 2-2=0. Двоичное число – 00001010.

Число десятичное 129: 129-128=1; 1-1=0. Двоичное число – 10000001.

Число десятичное 131: 131-128=3; 3-2=1; 1-1=0. Двоичное число – 10000011.

Число десятичное 127: 127-64=63; 63-32=31; 31-16=15; 15-8=7; 7-4=3; 3-2=1; 1-1=0. Двоичное число – 01111111.

Число десятичное 255: 255-128=127; 127-64=63; 63-32=31; 31-16=15; 15-8=7; 7-4=3; 3-2=1; 1-1=0. Двоичное число – 11111111.

Число десятичное 123: 123-64=59; 59-32=27; 27-16=11; 11-8=3; 3-2=1; 1-1=0. Двоичное число – 01111011.

Число десятичное 209: 209-128=81; 81-64=17; 17-16=1; 1-1=0. Двоичное число – 11010001.

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

Попробуйте сами преобразовать ваши число и год рождения. Для проверки можете использовать виндовс-калькулятор в инженерном режиме или режиме Программист.

Уделите несколько минут для «систем счисления в ip» – двоичной и десятичной.

Источник: http://infocisco.ru/numeral_system.html

Легкий перевод десятичного числа в двоичную систему счисления

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

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

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

Полезный пример-дополнение близкий к реалиям жизни

(автор примера: Александр Андреевич Прокопенко)

«Представьте, что у вас есть денежные купюры такого достоинства: 1 руб, 2 руб, 4 руб, 8 руб, 16 руб и т. д.

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

Нарисуем двоичную сетку с указанием сверху веса каждой ячейки (в рублях):

1024 512 256 128 64 32 16 8 4 2 1
1 1 1 1

Итак, товар стоит 57 рублей.

Мы извлекаем из кошелька ближайшую к 57 рублям купюру, т. е. 32 руб. Ставим в ячейке с весом 32 рубля единицу. Мы должны продавцу ещё: 57−32=25 рублей.

Извлекаем из кошелька ближайшую к 25 рублям купюру, т. е. 16 руб. Ставим в ячейке с весом 16 рублей единицу. Мы должны продавцу ещё: 25−16=9 рублей.

Извлекаем из кошелька ближайшую к 9 рублям купюру, т. е. 8 руб. Ставим в ячейке с весом 8 рублей единицу. Мы должны продавцу ещё: 9−8=1 рубль.

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

Не понадобившиеся купюры между 32 и 1 рублём отмечаем в сетке нулями.
Всё! Двоичный код готов.

Таким образом, получаем, что 5710 = 111 0012

Кстати, этот алгоритм ребята потом используют при программировании этой задачи на Turbo Pascal или C/C++.

Источник: https://videouroki.net/blog/legkiy-perevod-desyatichnogo-chisla-v-dvoichnuyu-sistemu-schisleniya.html

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

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

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

Устройство преобразования содержит регистры десятичного и двоичного чисел с общей цепью сдвига вправо на 1 бит и схему коррекции, вход которой соединен с выходом десятичного регистра, а выход подключен к входу этого регистра, а также счетчик тактов по числу разрядов двоичного числа. Преобразование происходит по схеме “сдвиг-коррекция”: на каждом шаге преобразования осуществляется сдвиг регистров вправо, а затем коррекция кода в регистре десятичного числа с целью получения корректного значения частного от деления на 2.

Недостатком описанного устройства является низкая производительность, так как преобразование выполняется за n тактов сдвига и коррекции, где n – разрядность двоичного кода [1, 2].

Другой способ преобразования десятичного числа N=DkDk-1…Di…D2D1, где k – число десятичных разрядов, Di – i-я десятичная цифра, состоит в использовании рекуррентной формулы

При выполнении по формуле (1) в двоичной системе получаем двоичное значение N. При этом умножение двоичного числа на 10 заменяется сложением числа, сдвинутого на 3 бита влево (умножение на 8) с этим же числом, сдвинутым на 1 бит влево (умножение на 2).

Устройство преобразования (фигура 1) содержит регистры двоичного (1) и десятичного (2) чисел, мультиплексор тетрад десятичного числа (4), первый двоичный сумматор (3), второй двоичный сумматор (5) и счетчик тактов (6) по числу десятичных разрядов k.

Выход регистра двоичного числа соединен с входами двоичного сумматора 3, причем к первому входу он подключен со сдвигом на 3 бита влево, а ко второму входу – со сдвигом на 1 бит влево.

Выход двоичного сумматора 3 подключен к первому входу двоичного сумматора 5, ко второму входу которого подключены выходы тетрад десятичного регистра 2 через мультиплексор тетрад десятичного числа 4, управляющий вход которого подключен к выходу счетчика тактов 6, а выход второго двоичного сумматора 5 соединен с входом двоичного регистра 1.

В каждом цикле преобразования выполняются следующие действия:

1) на входы первого двоичного сумматора (3) поступает код из двоичного регистра со сдвигом влево на 3 и 1 бит соответственно (умножение на 10), результат поступает на первый вход второго двоичного сумматора (5);

2) на второй вход второго двоичного сумматора (5) подается код очередной тетрады из десятичного регистра, начиная со старшей, результат поступает в двоичный регистр (1).

Процедура повторяется k раз, где k – разрядность десятичного регистра.

Описанное устройство является прототипом предлагаемого технического решения.

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

В предлагаемом техническом решении на каждом шаге обрабатывается две тетрады десятичного числа. Преобразование происходит в соответствии с выражением

где Bi – i-й байт (пара тетрад) десятичного числа. Умножение на 100 в соответствии с выражением 100=27+22-25 выполняется сложением двоичного числа, сдвинутого на 7 и 2 битов влево, и вычитанием этого же числа, сдвинутого на 5 битов влево.

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

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

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

Работа преобразователя кода описывается таблицей 1 и системой логических выражений (3), где d1, d2, d3, d4 – биты старшей тетрады байта десятичного числа; a1, a2, а3, a4, а5, a6, a7 – младшие (свободные) биты первого входа двоичного сумматора; c1, c2 – младшие (свободные) биты второго входа двоичного сумматора; b1, b2, b3, b4, b5 – младшие (свободные) биты второго входа двоичного вычитающего устройства. Цифры над обозначениями этих переменных в таблице соответствуют их весовым значениям.

.

Преобразователь кода, осуществляющий следующие преобразования:

c1=d4,

где d1, d2, d3, d4 – биты старшей тетрады байта десятичного числа; а1, а2, а3 – младшие биты первого входа двоичного сумматора; c1, c2 – младшие биты второго входа двоичного сумматора; b2, b3 – младшие биты второго входа двоичного вычитающего устройства, есть комбинационная схема – дешифратор.

Схема предлагаемого устройства приведена на фигуре 2, где 1 – регистр двоичного числа, 2 – регистр десятичного числа, 3 – двоичный сумматор, 4 – мультиплексор байт, 5 – двоичное вычитающее устройство, 6 – счетчик тактов, 7 – преобразователь кода.

Выход регистра двоичного числа (1) подключен к первому входу двоичного сумматора (3), причем выход разряда i регистра двоичного числа (1) соединен с входом разряда i+7 первого входа двоичного сумматора (3) соответственно, и ко второму входу двоичного сумматора (3), причем выход разряда i регистра двоичного числа (1) соединен с входом разряда i+2 второго входа двоичного сумматора (3) и ко второму входу двоичного вычитающего устройства (5), причем выход разряда i регистра двоичного числа (1) соединен с входом разряда i+5 второго входа двоичного вычитающего устройства (5) (i=1, 2,… n; n – разрядность регистра двоичного числа (1), двоичного сумматора (3) и двоичного вычитающего устройства (5). Значение n зависит и равно разрядности исходного двоично-десятичного кода, который записывается в регистр десятичного числа (2)). Выход двоичного сумматора (3) соединен с первым входом двоичного вычитающего устройства (5). Выходы байтов Bk, Bk-1,… B2, B1 десятичного регистра (2) через мультиплексор байт (4) подключены соответственно старшая тетрада ко входу преобразователя кода (7), а младшая тетрада к младшим разрядам первого входа двоичного сумматора (3), причем управляющий вход мультиплексора байт (4) подключен к выходу счетчика тактов (6), одна группа выходов преобразователя кода (7) (а1a2а3) соединена с 5, 6 и 7 разрядами первого входа двоичного сумматора (3), вторая группа (c1) – со вторым разрядом второго входа двоичного сумматора (3) и третья (b2b3) соответственно с 4 и 5 разрядами второго входа двоичного вычитающего устройства (5). Выход двоичного вычитающего устройства (5) соединен с входом регистра двоичного числа (1).

Устройство работает следующим образом. Вначале в регистр десятичного числа (2) загружается преобразуемый десятичный код, регистр двоичного числа (1) сбрасывается, а в счетчик тактов (6) заносится число пар десятичных разрядов k. Затем выполняется k тактов преобразования. В каждом из них выполняются следующие действия:

1) осуществляется выбор байта из регистра десятичного числа (2) мультиплексором байтов (4) под управлением счетчика тактов (6), начиная с Bk;

2) старшая тетрада выбранного байта поступает на вход преобразователя кода (7), на выходе которого получаем коды а1a2а3, c1 и b2b3;

Читайте также:  Снижение рассеивания тепла poe видеокамер при помощи активных мостовых выпрямителей

3) на первый и второй входы двоичного сумматора (3) подаются сдвинутое на 7 и 2 бит соответственно содержимое регистра двоичного числа (1), на младшие разряды с 1 по 4 первого входа двоичного сумматора (3) подается младшая тетрада очередного десятичного байта, на разряды с 5 по 7 первого входа двоичного сумматора (3) подается с преобразователя кода преобразованный код а1a2а3, на младший второй разряд второго входа двоичного сумматора (3) подается с преобразователя кода (7) преобразованный код c1;

4) результат суммирования передается на первый вход двоичного вычитающего устройства (5), а на второй вход двоичного вычитающего устройства (5) подается сдвинутое на 5 бит содержимое регистра двоичного числа (1), а на младшие разряды с 3 по 4 второго входа двоичного вычитающего устройства (5) подается с преобразователя кода (7) преобразованный код b2b3;

5) результат выполнения вычитания записывается в регистр двоичного числа (1).

Операция заканчивается при обнулении счетчика.

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

Литература

1. Карцев М.А. Арифметика цифровых машин. М.: Наука, 1969 г. п.1.2.4, п.5.2.2.

2. Злобин В.К., Григорьев В.Л. Программирование арифметических операций в микропроцессорах: Учебное пособие для технических вузов. – М: Высш. шк., 1991. Стр. 134, 141, 127.

Устройство преобразования из десятичной системы счисления в двоичную, содержащее регистр десятичного числа, регистр двоичного числа, двоичный сумматор и счетчик тактов, отличающееся тем, что в устройство дополнительно введены двоичное вычитающее устройство, преобразователь кода и мультиплексор байтов, управляющий вход которого подключен к выходу счетчика тактов, а информационные входы соединены с выходами соответствующих байтов регистра десятичного числа, один выход мультиплексора байтов подключен ко входу преобразователя кода, преобразователь кода осуществляет следующие преобразования а1=d1 ∨ d2·d3,c1=d4,где d1, d2, d3, d4 – биты старшей тетрады байта десятичного числа, a1, а2, а3 – младшие биты первого входа двоичного сумматора, c1, c2 – младшие биты второго входа двоичного сумматора, b2, b3 – младшие биты второго входа двоичного вычитающего устройства, а другой – к первому входу двоичного сумматора, одна группа выходов преобразователя кода соединена с первым входом двоичного сумматора, вторая – со вторым входом двоичного сумматора и третья группа – со вторым входом вычитающего устройства, выход регистра выход разряда i регистра двоичного числа соединен с разрядом i+7 первого входа двоичного сумматора, со вторым входом двоичного сумматора, причем выход разряда i регистра двоичного числа соединен с разрядом i+2 второго входа двоичного сумматора и со вторым входом двоичного вычитающего устройства, причем выход разряда i регистра двоичного числа соединен с разрядом i+5 второго входа двоичного вычитающего устройства, где i=1… n, n – разрядность регистра двоичного числа, двоичного сумматора и двоичного вычитающего устройства, выход двоичного сумматора подключен к первому входу двоичного вычитающего устройства, выход которого подключен ко входу двоичного числа.

Источник: http://www.FindPatent.ru/patent/224/2248094.html

Как перевести числа в двоичную систему счисления

Инструкция

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

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

В ней все числа представлены определенной последовательностью десяти цифр от 0 до 9.

Работа всей цифровой техники основана на двоичной системе счисления. В ней применяются всего два символа: 1 и 0.

Все огромное множество чисел представлены различными комбинациями данных цифр.

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

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

Смешанные системы счисления схожи с позиционными.

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

Так, к смешанной системе счисления можно отнести последовательность Фибоначчи, каждое число в которой равно сумме двух предыдущих чисел последовательности, начиная с 1. То есть последовательность имеет вид 1, 1 (1+0), 2 (1+1), 3 (1+2), 5 (2+3) и так далее.

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

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

В разное время у разных народов применялось множество систем счисления. Так, например, большой популярностью обладала римская система счисления, известная по сей день. В ней для записи чисел использовались латинские буквы V — 5, X — 10, L — 50, C — 100, D — 500, M — 1000.

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

Источник: https://www.kakprosto.ru/kak-14775-kak-perevesti-chisla-v-dvoichnuyu-sistemu-schisleniya

popoff.donetsk.ua title

Источник: http://popoff.donetsk.ua/text/donntu/odm/theory/enumeration/10-x.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

При переводе чисел из десятичной системы счисления в любую другую, всегда отдельно (по разным правилам) переводится целая и дробная части.

Перевод целой части

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

При этом важен остаток от деления и частное. Частное нужно делить на основание до тех пор, пока не останется 0.

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

Например, перевод – числа 25 из десятичной системы счисления в двоичную будет выглядеть следующим образом:

Выписав остатки в обратном порядке, получим 2510=110012.

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

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

Выписав остатки в обратном порядке, получим 39310=18916.

Нужно понимать, что остатки получаются в десятичной системе счисления. При делении на 16 могут появиться остатки не только от 0 до 9, но также и остатки от 10 до 15. Каждый остаток – это всегда ровно одна цифра в той системе счисления, в которую осуществляется перевод.

Например, если при переводе в шестнадцатеричную систему счисления Вы получили такие остатки (выписаны в порядке, как они должны быть записаны в числе): 10, 3, 15, 7, то в шестнадцатеричной системе счисления этой последовательности остатков будет соответствовать число A3F716 (некоторые по ошибке записывают число как 10315716 – понято же, что это совсем другое число, и что если так делать, то получится, что ни в каком шестнадцатеричном числе не появится цифры от A до F).

Перевод дробной части

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

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

При этом существует два условия завершения процесса:

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

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

Вот пример перевода числа 0.3910 в двоичную систему счисления. Точность – 8 разрядов (в данном случае точность перевода выбрана произвольно):

Если выписать целые части в прямом порядке, то получим 0.3910=0.011000112.

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

Вот так будет выглядеть перевод числа 0.3910 в шестнадцатеричную систему счисления. Точность – 8 разрядов в данном случае точность снова выбрана произвольно:

Если выписать целые части в прямом порядке, то получим 0.3910=0.63D700A316.

При этом Вы, наверное, заметили, что целые части при умножении получаются в десятичной системе счисления.

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

То есть, если при переводе в шестнадцатеричную систему счисления целые части получились в таком порядке: 3, 13, 7, 10, то соответствующее число будет равно 0.3D7A16 (а не 0.31371016, как некоторые иногда ошибочно записывают).

Перевод числа с целой и дробной частью

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

Например, 25.3910=11001.011000112 (переводы целой и дробной части – смотрите выше).

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

Поскольку при работе с различными системами счисления, особенно при разработке программ, очень часто возникает необходимость перевода небольших целых чисел, то, вообще говоря, имеет смысл запомнить таблицу соответствия для первых 16 чисел (от 0 до 15).

Но если разобраться, как легко в уме переводить небольшие целые числа от 0 до 15 из десятичной системы счисления в двоичную, то значительную часть таблицы Вы сможете просто вычислять в уме каждый раз, когда это будет нужно. Проделывайте эту операцию много раз, и в какой-то момент Вы сами не сможете понять – Вы уже запомнили таблицу или всё ещё вычисляете.

Итак, чтобы перевести небольшое положительное целое число от 0 до 15 из десятичной системы счисления в двоичную, первое, что нужно понять – это что каждой позиции в двоичном числе соответствует степень двойки. При этом степени двойки для позиций от 0 до 3 запомнить очень просто – это числа 1, 2, 4 и 8:

Далее, десятичное число, которое Вы хотите перевести в двоичную систему счисления, нужно представить в виде суммы чисел 1, 2, 4 и 8, причём каждое число можно использовать не больше одного раза. Если Вы задумаетесь, то поймёте, что это можно сделать только одним-единственным способом.

Когда Вы получили список чисел, которые должны войти в сумму, в позициях, соответствующих этим числам, нужно поставить единички, в остальных – нолики. Например, число 5 – это 4 плюс 1:

А число 10 – это 2 плюс 8:

Число 15 можно получить только сложив все числа 1, 2, 4, 8:

Ну а число 0 – грех не запомнить, так как, чтобы его получить, ничего не нужно складывать:

Последняя модификация: 22.02.09 20:45

q

Не проходите мимо! Оставьте Ваш комментарий в форуме! >>>

Цитирование материалов моего сайта приветствуется! при условии видимой действующей! гиперссылки на мой сайт.  [Ссылки]

Если Вы нашли опечатку на этой странице, пожалуйста, выделите ее мышью и нажмите Ctrl+Enter. Сделаем язык чище!

(c) Yuri Popoff, 2004 – 2008, popoff.donetsk.ua, style.donetsk.ua