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

Содержание

Системное администрирование и мониторинг Linux/Windows серверов и видео CDN

Статьи по настройке и администрированию Windows/Linux систем

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

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

1. Системы счислений

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

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

1.1 Десятичная

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

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

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


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


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

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

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

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


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

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

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

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


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

1.2 Двоичная

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

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

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

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

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

    Число состоит из 5 символов (n=5)

  • p = 2 (так как переводим из двоичной в десятичную)
  • 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

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


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

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

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

    10101001 = 0 10 101 001

    1011100 = 00 1 011 100

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


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

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

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

    110101011 = 000 1 1010 1011

    1011100 = 0 101 1100

    001010000 = 00 0101 0000 = 0101 0000

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


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

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

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

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

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


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

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


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

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

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

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


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

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

      Число состоит из 3 символов (n=3)

  • p = 8 (так как переводим из восьмеричной в десятичную)
  • В результате имеем:

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

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

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


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

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


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

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

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

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

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


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

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

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

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


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

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

      Число состоит из 2 символов (n=2)

  • p = 16 (так как переводим из шестнадцатеричной в десятичную)
  • В результате имеем.

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

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

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


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

    В следующей статье пойдет речь о IP-адресах, масках и сетях.

    Источник

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

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

    Система счисления — это способ представления числа. Одно и то же число может быть представлено в различных видах. Например, число 200 в привычной нам десятичной системе может иметь вид 11001000 в двоичной системе, 310 в восьмеричной и C8 в шестнадцатеричной.

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

    Для указания системы счисления при записи числа используется нижний индекс, который ставится после числа:
    20010 = 110010002 = 3108 = C816

    Кратко об основных системах счисления

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

    Двоичная система счисления. Используется в вычислительной технике. Для записи числа используются цифры 0 и 1.

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

    Шестнадцатеричная система счисления. Наиболее распространена в современных компьютерах. При помощи неё, например, указывают цвет. #FF0000 — красный цвет. Для записи числа используются цифры от 0 до 9 и буквы A,B,C,D,E,F, которые соответственно обозначают числа 10,11,12,13,14,15.

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

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

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

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

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

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

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

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

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

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

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

    Тетрада 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
    Цифра 0 1 2 3 4 5 6 7 8 9 A B C D E F

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

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

    Используем таблицу триад:

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

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

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

    Используем таблицу тетрад:

    Цифра 0 1 2 3 4 5 6 7 8 9 A B C D E F
    Тетрада 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

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

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

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

    Источник

    Оцените статью
    ( Пока оценок нет )
    Поделиться с друзьями
    Uchenik.top - научные работы и подготовка
    0 0 голоса
    Article Rating
    Подписаться
    Уведомить о
    guest
    0 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии