Как сделать систему счисления

Обновлено: 05.07.2024

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

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

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

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

Изначально в счете использовали пальцы рук, поэтому первые знаки появились для групп из 5 и 10 штук (единиц). Все это позволило создать более удобные системы записи чисел.

Вавилонская шестидесятеричная система счисления.

В вавилонской системе счисления использовали только 2 символа: “прямой” клин — для единиц и “лежащий” — для десятков. Для определения значения числа нужно изображение числа разбить на разряды справа налево. Новый разряд начинается с появления прямого клина после лежачего. Для примера посмотрим на число 32:

Число 60 и все его степени так же обозначаются прямым клином, что и “1”. Поэтому вавилонская система счисления получила название шестидесятеричной системы счисления.

Все числа от 1 до 59 вавилоняне записывали в десятичной непозиционной системе, а значения больше 59 — в позиционной с основанием 60. Например, число 92:

Запись числа была не конкретной, так как не было цифры, которая обозначала бы нуль. Представление числа 92 могло обозначать не только 92=60+32, но и, например, 3632=3600+32. Для определения абсолютного значения числа они ввели новый символ для обозначения пропущенного шестидесятеричного разряда, что соответствует появлению цифры 0 в записи десятичного числа:

Значит, число 3632 записывают так:

Шестидесятеричная вавилонская система — первая система счисления, которая частично основана на позиционном принципе. Эту систему счисления используют и сейчас, например, для определения времени — час состоит из 60 минут, а минута из 60 секунд.

Типы систем счисления

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

XXXV = 10+10+10+5 = 35;
CCXIX = 100+100+10–1+10 = 219;

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


(иероглифы по порядку: 2, 1000, 4, 100, 2, 10, 5)

Здесь дважды использован иероглиф “2”, и в каждом случае он принимал разные значения “2000” и “20”.

2´ 1000 + 4´ 100+2´ 10+5 = 2425

Для аддитивной (“добавительной”) системы нужно знать все цифры-символы с их значениями (их бывает до 4-5 десятков), и порядок записи. Например, в Латинской записи если меньшая цифра записана перед большей, то производится вычитание, а если после, то сложение (IV = (5–1) = 4; VI = (5+1) = 6).

Для мультипликативной системы нужно знать изображение цифр и их значение, а так же основание системы счисления. Определить основание очень легко, нужно только пересчитать количество значащих цифр в системе. Если проще, то это число, с которого начинается второй разряд у числа. Мы, например, используем цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Их ровно 10, поэтому основание нашей системы счисления тоже 10, и система счисления называется “десятичная”. В вышеприведенном примере используются цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (вспомогательные 10, 100, 1000, 10000 и т. д. не в счет). Основных цифр здесь тоже 10, и система счисления – десятичная.

Как можно догадаться, сколько есть чисел, столько же может быть и оснований систем счисления. Но используются только самые удобные основания систем счисления. Как вы думаете, почему основание самой употребительной человеческой системы счисления 10? Да, именно потому, что на руках у нас 10 пальцев. “Но на одной то руке всего пять пальцев” – скажут некоторые и будут правы. История человечества знает примеры пятеричных систем счисления. “А с ногами – двадцать пальцев” – скажут другие, и будут тоже абсолютно правы. Именно так считали индейцы Майя. Это даже видно по их цифрам.

Очень интересно понятие “дюжина”. Всем известно, что это 12, но откуда появилось такое число – мало кто знает. Посмотрите на свои руки, вернее, на одну руку. Сколько фаланг на всех пальцах одной руки, не считая большого? Правильно, двенадцать. А большой палец предназначен отмечать отсчитанные фаланги.

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

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

Так у французов когда-то была двадцатеричная система счисления, поскольку 80 по-французски звучит как “четырежды двадцать”.

Римляне, или их предшественники использовали когда-то пятеричную систему, так как V ни что иное, как изображение ладони с отставленным большим пальцем, а X – это две таких же руки.

Немного исходников

Кому интересно, выкладываю исходники (: Написаны, само собой, на JS. На Java в целом всё выглядит так же, с той лишь разницей, что надо везде типы определить и соответствующие приведения типов сделать.

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

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

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

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

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

  1. Представить число в развернутой форме. При этом основание системы счисления должно быть представлено в десятичной системе счисления.
  2. Найти сумму ряда. Полученное число является значением числа в десятичной системе счисления.

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

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

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

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

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

  1. Отдельно переводится целая часть.
  2. Отдельно переводится дробная.
  3. В итоговой записи полученного числа целая часть отделяется от дробной запятой.

Перевод чисел из двоичной системы счисления в систему счисления с основанием q=2n

Системы счисления и их разновидности.

Система счисления – это способ представления, записи чисел с помощью письменных знаков. Количество этих самых знаков (цифр), используемых для записи чисел, называется основанием системы счисления.

Различных систем счисления у разных народов существовало великое множество. Но все их можно поделить на непозиционные и позиционные. Позиционные системы в свою очередь подразделяются на однородные и смешанные.





1. Непозиционные системы счисления.

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


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

Еще одной используемой до сих пор почти непозиционной системой счисления является Римская:

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

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

2. Позиционные системы счисления.

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

Мы видим, что числа 15 и 51 имеют совсем разные значения, хотя состоят из одних и тех же цифр. Разница обусловлена положением цифры в числе.

Но десятичная система ничем не лучше и не хуже другой позиционной системы, она просто привычная. Число 10 выбрано основанием по количеству пальцев на двух руках (для удобства счета). Однако, в Китае популярной была пятиречная система счисления (по количеству пальцев на одной руке), а двадцатиричная система использовалась у Ацтеков, Майя и некоторых народов Африки (по количеству пальцев на ногах и руках).

Еще одной известной позиционной системой счисления является двенадцатиричная (считали фаланги пальцев (кроме большого) на руке. Элементы двенадцатиричной системы сохранились в Англии: 1 фут = 12 дюймов, 1 шиллинг = 12 пенсов.

2.1. Однородные системы счисления.

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

2.2. Смешанные системы счисления.

В смешанной системе счисления набор используемых цифр может отличаться в зависимости от позиции. В качестве примера удобно рассмотреть запись времени в формате ЧЧ.ММ.СС (часы.минуты.секунды). В качестве часов может быть использовано число от 00 до 23, в качестве минут и секунд – число от 00 до 59.


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

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

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


Например, переведем число 9 в двоичную систему:

Делим 9, так как число не делится нацело, то берем число 8, остаток будет 9 – 1 = 1.

После деления 8 на 2 получаем 4. Снова делим его, так как число делится нацело – получаем в остатке 4 – 4 = 0.

Проводим ту же операцию с 2. В остатке получаем 0.

В итоге деления у нас получается 1.

Далее записываем все полученные нами остатки в обратном порядке, начиная с итога деления: 1001.

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

Калькулятор позволяет переводить целые и дробные числа из одной системы счисления в другую. Основание системы счисления не может быть меньше 2 и больше 36 (10 цифр и 26 латинских букв всё-таки). Длина чисел не должна превышать 30 символов. Для ввода дробных чисел используйте символ . или , . Чтобы перевести число из одной системы в другую, введите исходное число в первое поле, основание исходной системы счисления во второе и основание системы счисления, в которую нужно перевести число, в третье поле, после чего нажмите кнопку "Получить запись".

Исходное число записано в -ой системе счисления.

Хочу получить запись числа в -ой системе счисления.

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

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

Пример 1. Возьмём число 5921 в десятичной системе счисления. Пронумеруем число справа налево начиная с нуля:

Число:5921
Позиция:3210

Число 5921 можно записать в следующем виде: 5921 = 5000+900+20+1 = 5·10 3 +9·10 2 +2·10 1 +1·10 0 . Число 10 является характеристикой, определяющей систему счисления. В качестве степеней взяты значения позиции данного числа.

Пример 2. Рассмотрим вещественное десятичное число 1234.567. Пронумеруем его начиная с нулевой позиции числа от десятичной точки влево и вправо:

Число:1234567
Позиция:3210-1-2-3

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

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

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

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

1. Перевести число 1001101.11012 в десятичную систему счисления.
Решение: 1001101.11012 = 1·2 6 +0·2 5 +0·2 4 +1·2 3 +1·2 2 +0·2 1 +1·2 0 +1·2 -1 +1·2 -2 +0·2 -3 +1·2 -4 = 64+8++4+1+0.5+0.25+0.0625 = 77.812510
Ответ: 1001101.11012 = 77.812510

2. Перевести число E8F.2D16 в десятичную систему счисления.
Решение: E8F.2D16 = 14·16 2 +8·16 1 +15·16 0 +2·16 -1 +13·16 -2 = 3584+128+15+0.125+0.05078125 = 3727.1757812510
Ответ: E8F.2D16 = 3727.1757812510

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

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

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

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

3. Перевести число 27310 в восьмиричную систему счисления.
Решение: 273 / 8 = 34 и остаток 1, 34 / 8 = 4 и остаток 2, 4 меньше 8, поэтому вычисления завершены. Запись из остатков будет иметь следующий вид: 421
Проверка: 4·8 2 +2·8 1 +1·8 0 = 256+16+1 = 273 = 273 , результат совпал. Значит перевод выполнен правильно.
Ответ: 27310 = 4218

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

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

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

4. Перевести число 0.12510 в двоичную систему счисления.
Решение: 0.125·2 = 0.25 (0 - целая часть, которая станет первой цифрой результата), 0.25·2 = 0.5 (0 - вторая цифра результата), 0.5·2 = 1.0 (1 - третья цифра результата, а так как дробная часть равна нулю, то перевод завершён).
Ответ: 0.12510 = 0.0012


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

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

Для начала нужно написать себе в черновик следующую таблицу:


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

Давайте рассмотрим данную таблицу. В первом столбце идут числа от 0 до 15 в нашей родной десятичной системе счисления. Во втором столбце идут числа так же от 0 до 15, но уже в двоичной системе, а в третьем тоже от 0 до 15 в шестнадцатиричной системе счисления.

Написать числа от 0 до 15 в нашей родной десятичной системе не у кого затруднений не вызовет.

Числа в двоичной же системе лучше всего написать по следующему правилу: в младшем разряде чередуем ноль и единицу, в следующем разряде чередование нулей и единиц происходит в два раза медленнее (два нуля, две единицы, два нуля и т.д.), в следующем разряде ещё в два раза медленнее чередование (4 нуля, 4 единицы и т.д.) и наконец 8 нулей и 8 единиц - в самом старшем разряде.

В шестнадцатиричной системе счисления помимо наших привычных символов от 0 до 9 придуманы символы A, B, С, D, E, F, и из этих 16 символов (от 0 до 15) составляется любое число, так же как в нашей системе составляется любое число из десяти цифр (от 0 до 9).Соответственно, чтобы посчитать от 0 до 15 - нужно перебрать все символы, которые имеются в шестнадцатиричной системе (от 0 до F).

Теперь рассмотрим, как с помощью данной таблицы переводить из двоичной системы в шестнадцатиричную. Переведём число 100101000 из двоичной системы в шестнадцатиричную.


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

Чтобы выполнить данную задачу, необходимо разбить наше двоичное число по 4 цифры начиная с правого края, и каждую 4-ку цифр нужно найти в нашей таблице: 1000 - это будет 8, 0010 - 2, 0001 -это 1. В старшем разряде у нас осталась одна единица, мы её дополнили 3-мя нулями.

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

Значит число 1001010002 в двоичной системе счисления будет 12816 в шестнадцатиричной.

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

Из двоичной системы в восьмеричную систему X2 -> X8 переводим точно так же, только теперь из таблицы берём не по четыре цифры, а по три цифры.

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

Таким образом, число 10011110012 в двоичной системе будет равно 11718 в восьмеричной системе.

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

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

Делаем точно так же, как и при переводе чисел из двоичной в шестнадцатиричную, но в обратном порядке. По таблице смотрим: D - 1101, F - 1111, 4 - 0100. Получается число 010011111101. Слева нули мы отбрасываем 10011111101.

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

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

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

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

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

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

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

После вычисления получаем число в десятичной системе:

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

Результат 110100112 -> 21110

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

Рассмотрим, как перевести из десятичной системы в двоичную. Возьмём число 213.

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

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

Переведём число A10 из шестнадцатиричной системы в восьмеричную A1016 -> X8.

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

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

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

Переведём число 5B3 из шестнадцатиричной системы в десятичную систему счисления 5B316 -> X10.

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

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

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

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

Переведём число 203 из десятичной системы в шестнадцатиричную систему счисления 20310 -> X16

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

Делим число на 16 до тех пор пока не получится число от 1 до 15. Записываем остатки в обратном порядке. Числа от 10 до 15 превращаем в буквы.

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

Переведём число 347 из восьмеричной системы в десятичную систему счисления 3478 -> X10

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

Делаем аналогично предыдущим примерам, только теперь умножаем на 8 в соответствующей степени.

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

Основание системы счисления указывает какое количество цифр используется в этой системе для написания чисел:

  • Привычная нам система счисления по основанию 10 (десятичная система счисления) использует 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. После 9 идёт не цифра, а число 10, состоящее из двух цифр: 1 и 0. Таким образом, мы записываем любые числа, используя указанные цифры в определённой последовательности.
  • Система счисления по основанию 2 (двоичная система счисления) использует 2 цифры: 0, 1.
  • Система счисления по основанию 4 (четверичная система счисления) использует 4 цифры: 0, 1, 2, 3.
  • Система счисления по основанию 8 (восьмеричная система счисления) использует 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7.
  • Система счисления по основанию 16 (шестнадцатеричная система счисления) использует 16 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. В данном случае, буквы ABCDEF являются цифрами. Цифра A шестнадцатеричной системы, равна числу 10 десятичной системы, цифра B равна числу 11 десятичной системы, . , цифра F равна числу 15 десятичной системы.

Можно использовать любую систему счисления, например по основанию 12 (счет дюжинами), но наиболее популярными при программировании, являются: десятичная, шестнадцатеричная и двоичная, системы счисления.

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

Методы представления чисел в разных системах счисления:

  • двоичная система счисления:
    • (10101)2 - математическое представление (число)основание системы
    • 0b10101 - представление в скетчах Arduino IDE (число записывается с ведущими символами "0b").
    • B10101 - представление в скетчах Arduino IDE (число до 256 записывается с ведущим символом "B").
    • (10101)8 - математическое представление (число)основание системы
    • 010101 - представление в скетчах Arduino IDE (число записывается с ведущим символом "0" ноль).
    • (10101)10 - математическое представление (число)основание системы
    • 10101 - представление в скетчах Arduino IDE (число записывается как есть без ведущих символов)
    • (10101)16 - математическое представление (число)основание системы
    • 0x10101 - представление в скетчах Arduino IDE (число записывается с ведущими символами "0x").

    Перевод чисел в десятичную систему счисления:

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

    Σ(цифра_числа * основание_системы позиция_цифры )

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

    Перевод чисел из десятичной системы счисления:

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

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

    • (43)10 перевести в двоичную систему счисления:
      • 43/2 = 21 и 1 в остатке
      • 21/2 = 10 и 1 в остатке
      • 10/2 = 5 и 0 в остатке
      • 5/2 = 2 и 1 в остатке
      • 2/2 = 1 и 0 в остатке
      • 1/2 = 0 и 1 в остатке
      • результат - цифры остатков в обратном порядке = (101011)2
      • 751/8 = 93 и 7 в остатке
      • 93/8 = 11 и 5 в остатке
      • 11/8 = 1 и 3 в остатке
      • 1/8 = 0 и 1 в остатке
      • результат - цифры остатков в обратном порядке = (1357)8
      • 15305/16 = 956 и 9 в остатке
      • 956/16 = 59 и 12 в остатке - соответствует цифре (C)16
      • 59/16 = 3 и 11 в остатке - соответствует цифре (B)16
      • 3/16 = 0 и 3 в остатке
      • результат - цифры остатков в обратном порядке = (3BC9)16

      Простой метод перевода:

      Легче всего переводить числа через двоичную систему счисления. О том как это сделать рассказано в нашем видеоуроке.

      binary

      Когда занимаешься настройками сетей различного масштаба и каждый день сталкиваешься с вычислениями – то такого рода шпаргалки заводить не обязательно, все и так делается на безусловном рефлексе. Но когда в сетях ковыряешься очень редко, то не всегда вспомнишь какая там маска в десятичной форме для префикса 21 или же какой адрес сети при этом же префиксе. В связи с этим я и решил написать несколько маленьких статей-шпаргалок по переводом чисел в различные системы счислений, сетевым адресам, маскам и т.п. В это части пойдет речь о переводи чисел в различные системы счислений.

      Когда вы занимаетесь чем-то связанным с компьютерными сетями и ИТ, вы по любому столкнетесь с этим понятием. И как толковый ИТ-шник вам нужно разбираться в этом хотя бы чу-чуть даже если на практике вы это будете применять очень редко.
      Рассмотрим перевод каждой цифры из IP-адреса 98.251.16.138 в следующие системы счислений:

      • Двоичная
      • Восьмеричная
      • Десятичная
      • Шестнадцатеричная

      1.1 Десятичная

      Так как цифры записаны в десятичной, перевод с десятичной в десятичную пропустим 🙂

      1.1.1 Десятичная → Двоичная

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

      10-2_1


      Рисунок 1.1 – Перевод чисел из десятичной в двоичную систему

      10-2_2


      Рисунок 1.2 – Перевод чисел из десятичной в двоичную систему

      Опишу деление числа 98. Мы делим 98 на 2, в результате имеем 49 и остаток 0. Далее продолжаем деление и делим 49 на 2, в результате имеем 24 с остатком 1. И таким же образом добираемся до 1-ки или 0-ка в делимом. Затем результат записываем справа налево.

      1.1.2 Десятичная → Восьмеричная

      Восьмеричная система – это целочисленная система счисления с основанием 8. Т.е. все числа в ней представлены диапазоном 0 – 7 и для перевода с десятичной системы нужно использовать деление по модулю 8.

      10-8


      Рисунок 1.3 – Перевод чисел из десятичной в восьмеричную систему

      Деление аналогично 2-чной системе.

      1.1.3 Десятичная → Шестнадцатеричная

      Шестнадцатеричная система почти полностью вытеснила восьмеричную систему. У нее основание 16, но используются десятичные цифры от 0 до 9 + латинские буквы от A(число 10) до F(число 15). С ней вы сталкиваетесь каждый раз, когда проверяете настройки сетевого адаптера — это МАС-адрес. Так же, когда используется IPv6.

      10-16


      Рисунок 1.4 – Перевод чисел из десятичной в шестнадцатеричную систему

      1.2 Двоичная

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

      1.2.1 Двоичная → Десятичная

      Для перевода чисел с двоичной формы в десятичную нужно знать два нюанса. Первый – у каждого нолика и единички есть множитель 2 в n-й степени, при котором n увеличивается справа налево ровно на единичку. Второй – после перемножения все числа нужно сложить и мы получим число в десятичной форме. В итого у нас будет формула такого вида:

      Где,
      D – это число в десятичной форме, которое мы ищем;
      n – количество символов в двоичном числе;
      a – число в двоичной форме на n-й позиции (т.е. первый символ, второй, и т.п.);
      p – коэффициент, равный 2,8 или 16 в степени n (в зависимости от системы счисления)

      К примеру возьмем число 110102. Смотрим на формулу и записываем:

      D = (1 × 2 5-1 ) + (1 × 2 5-2 ) + (0 × 2 5-3 ) + (1 × 2 5-4 ) + (0 × 2 5-5 ) = 16 + 8 + 0 + 2 + 0 = 2610

      Кто привык записывать справа на лево, форму будет выглядеть так:

      D = (0 × 2 5-5 ) + (1 × 2 5-4 ) + (0 × 2 5-3 ) + (1 × 2 5-2 ) + (1 × 2 5-1 ) = 0 + 2 + 0 + 8 + 16 = 2610

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

      2-10


      Рисунок 1.5 – Перевод чисел из двоичной в десятичную систему

      1.2.2 Двоичная → Восьмеричная

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

      10101001 = 0 10 101 001

      1011100 = 00 1 011 100

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

      2-8


      Рисунок 1.6 – Перевод чисел из двоичной в восьмеричную систему

      1.2.3 Двоичная → Шестнадцатеричная

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

      110101011 = 000 1 1010 1011

      1011100 = 0 101 1100

      001010000 = 00 0101 0000 = 0101 0000

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

      2-16


      Рисунок 1.7 – Перевод чисел из двоичной в шестнадцатеричную систему

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

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

      1.3.1 Восьмеричная → Двоичная

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

      shpora_8


      Рисунок 1.8 – Шпора по переводу чисел из восьмеричной системы

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

      Немного опишу вывод. Первое число у нас 142, значит будет три группы по три бита в каждой. Юзаем шпору и видим, что цифра 1 это 001, цифра 4 это 100 и цифра 2 это 010. В результате имеем число 001100010.

      1.3.2 Восьмеричная → Десятичная

      Здесь мы используем формулу 1.2.1 только с коэффициентом 8 (т.е. p=8). В результате имеем

      Возьмем первое число. Исходя из формулы 1.2.1:

      В результате имеем:

      D = (1 × 8 3-1 ) + (4 × 8 3-2 ) + (2 × 8 3-3 ) = 64 + 32 + 2 = 9810

      1.3.3 Восьмеричная → Шестнадцатеричная

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

      shpora_16


      Рисунок 1.11 – Шпора по переводу чисел из шестнадцатеричной системы

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

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

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

      1.4.1 Шестнадцатеричная → Двоичная

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

      16-2


      Рисунок 1.13 – Перевод чисел из шестнадцатеричной в двоичную систему

      Возьмем первое число – 62. Используя табличку (рис. 1.11) мы видим, что 6 это 0110, 2 это 0010, в результате имеем число 01100010.

      1.4.2 Шестнадцатеричная → Десятичная

      Здесь мы используем формулу 1.2.1 только с коэффициентом 16 (т.е. p=16). В результате имеем

      16-10


      Рисунок 1.14 – Перевод чисел из шестнадцатеричной в десятеричную систему

      Возьмем первое число. Исходя из формулы 1.2.1:

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

      D = (6 × 16 2-1 ) + (2 × 16 2-2 ) = 96 + 2 = 9810

      1.4.3 Шестнадцатеричная → Восьмеричная

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

      16-8


      Рисунок 1.15 – Перевод чисел из шестнадцатеричной в восьмеричную систему

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