Способы перевода целых чисел

Содержание
  1. Методы перевода десятичного числа в двоичное
  2. Позиционные системы счисления
  3. Таблица перевода десятичных чисел от 0 до 20 в двоичную систему счисления.
  4. Способ №1.
  5. Способ №2.
  6. Пример:
  7. Перевод чисел из одной системы счисления в другую
  8. Кратко об основных системах счисления
  9. Перевод в десятичную систему счисления
  10. Перевод из десятичной системы счисления в другие
  11. Перевод из двоичной системы в восьмеричную
  12. Перевод из двоичной системы в шестнадцатеричную
  13. Перевод из восьмеричной системы в двоичную
  14. Перевод из шестнадцатеричной системы в двоичную
  15. Перевод из восьмеричной системы в шестнадцатеричную и наоборот
  16. Алгебраическая конкатенация и её возможности по переводу чисел между системами счисления
  17. Алгебраическая конкатенация
  18. Классический способ смены системы счисления
  19. Смена системы счисления через алгебраическую конкатенацию
  20. Вывод

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

В одном из наших материалов мы рассмотрели определение двоичного числа. Оно имеет самый короткий алфавит. Только две цифры: 0 и 1. Примеры алфавитов позиционных систем счисления приведены в таблице.

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

Название системы

Основание

Алфавит

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

Таблица перевода десятичных чисел от 0 до 20 в двоичную систему счисления.

десятичное

число

двоичное число

десятичное

число

двоичное число

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

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

Способ №1.

Допустим, требуется перевести число 637 десятичной системы в двоичную систему.

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

В нашем случае это 9, т.к. 2 9 =512, а 2 10 =1024, что больше нашего начального числа. Таким образом, мы получили число разрядов результата. Оно равно 9+1=10. Значит, результат будет иметь вид 1ххххххххх, где вместо х может стоять 1 или 0.

Найдем вторую цифру результата. Возведем двойку в степень 9 и вычтем из исходного числа: 637-2 9 =125. Затем сравниваем с числом 2 8 =256. Так как 125 меньше 256, то девятый разряд будет 0, т.е. результат уже примет вид 10хххххххх.

2 7 =128 > 125, значит и восьмой разряд будет нулём.

2 6 =64, то седьмой разряд равен 1. 125-64=61 Таким образом, мы получили четыре старших разряда и число примет вид 10011ххххх.

2 5 =32 и видим, что 32 4 =16 1001111ххх. Остаток 29-16=13.

2 3 =8 10011111хх. 13-8=5

2 2 =4 10011111хх, остаток 5-4=1.

2 1 =2 > 1 => 100111110х, остаток 2-1=1.

2 0 =1 => 1001111101.

Это и будет конечный результат.

Способ №2.

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

  1. Разделим an−1an−2. a1a0=an−1⋅2 n−1 +an−2⋅2 n−2 +. +a0⋅2 0 на 2.
  2. Частное будет равно an−1⋅2n−2+. +a1, а остаток будет равен
  3. Полученное частное опять разделим на 2, остаток от деления будет равен a1.
  4. Если продолжить этот процесс деления, то на n-м шаге получим набор цифр: a0,a1,a2. an−1, которые входят в двоичное представление исходного числа и совпадают с остатками при его последовательном делении на 2.
  5. Таким образом, для перевода целого десятичного числа в двоичную систему счисления нужно последовательно выполнять деление данного числа и получаемых целых частных на 2 до тех пор, пока не получим частное, которое будет равно нулю.

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

Читайте также:  Иные способы систематизации нормативно правовых актов

Переведём десятичное число 11 в двоичную систему счисления. Рассмотренную выше последовательность действий (алгоритм перевода) можно изобразить так:

Получили 1110=10112.

Пример:

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

Источник

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

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

Система счисления — это способ представления числа. Одно и то же число может быть представлено в различных видах. Например, число 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 — номер разряда.

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

Триада 000 001 010 011 100 101 110 111
Цифра 0 1 2 3 4 5 6 7

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

Разбиваем число на группы по 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 разрядов, тогда дополняем нулями. Записываем все группы по порядку, отбрасываем ведущие нули, если имеются, и получаем двоичное число.

Читайте также:  Диоксид кремния способ применения

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

Цифра 0 1 2 3 4 5 6 7
Триада 000 001 010 011 100 101 110 111

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

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

Аналогично переводу из восьмеричной в двоичную, только группы по 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

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

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

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

Источник

Алгебраическая конкатенация и её возможности по переводу чисел между системами счисления

Алгебраическая конкатенация

Для начала, еще раз, распишем, что такое «Алгебраическая конкатенация».

Для примера возьмем число 10958 и представим его с операцией конкатенации, а именно: 1‖0‖9‖5‖8 = (((1 * 10 + 0) * 10 + 9) * 10 + 5) * 10 + 8.

Т.е операция «конкатенации» это: a ‖ b = (a * 10) + b; Но 10 — это «хитрое» число… Это число следующие за максимальным в системе счисления, ну т.е. это просто основание системы счисления т.е. общий вид такой:

a ‖ b = (a * m) + b, где m – основание системы счисления представленное в обозначении самой системы.

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

, где m_1 — это целое число означающее 1 в системе счисления, а m^k — основание системы счисления. Вот теперь получилось красиво с точки зрения определения, но
a ‖ b = (a * 10) + b – легче для восприятия.

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

Двоичная: 10 1010 1100 1110 = 1‖0‖1‖0‖1‖0‖1‖1‖0‖0‖1‖1‖1‖0 = ((((((((((((1 * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1) * 10 + 0) * 10 + 0) * 10 + 1) * 10 + 1) * 10 + 1) * 10 + 0

Восьмеричная: 25316 = 2‖5‖3‖1‖6 = (((2 * 10 + 5) * 10 + 3) * 10 + 1) * 10 + 6

Шестнадцатеричная 2ACE = 2‖A‖C‖E = ((2 * 10 + A) * 10 + C) * 10 + E

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

1) Операция конкатенации неассоциативна.

То есть, если нужно выполнить конкатенацию трёх цифр, то от расстановки скобок результат изменится: ( 1 ‖ 2) ‖ 3 = 123, и в то же время 1 ‖ ( 2 ‖ 3 ) = 33.

2) Операция конкатенации некоммутативна.

В самом деле, wiki ‖ media = wikimedia, но media ‖ wiki = mediawiki ≠ wikimedia. От перестановки операндов меняется результат операции, что и означает её некоммутативность.

3) Пустое слово — ε, — является нейтральным элементом (единицей) операции конкатенации.
То есть, если ε— пустое слово, то для любого слова α выполнено равенство: ε ‖ a = a ‖ ε = a

4) Длина (количество букв) конкатенации слов равна сумме длин операндов:
|α ‖ β| = |α| + |β|.

Классический способ смены системы счисления

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

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

А перевод числа 934 в шестнадцатеричную систему счисления выглядит так.

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

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

Читайте также:  Расчетный способ учета электрической энергии мощности

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

Смена системы счисления через алгебраическую конкатенацию

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

Таблица 1 – представление цифр в разных системах счисления:

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

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

Таблица 2 – множители основания системы в разных система счисления.

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

Получается, чтобы перевести число 934 из десятичной системы счисления в шестнадцатеричную мы просто берем числа из таблицы.
9‖3‖4
= (9 * 10 + 3) * 10 + 4 — запись в десятичной системе
= (9 * A + 3) * A + 4 — здесь и далее уже шестнадцатеричная система
= (5A + 3) * A + 4
= 5D * A + 4
= 3A2 + 4
= 3A6

Возьмем еще одно число, на этот раз в двоичной системе счисления 1101011, и попробуем получить восьмеричную, потом десятичную и обратно в двоичную
1101011
= 1‖1‖0‖1‖0‖1‖1 — запись в двоичной системе
= (((((1 * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1 — запись в двоичной системе
= (((((1 * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 1 — восьмеричная система
= 153 — восьмеричная система
= 1‖5‖3
= (1 * 10 + 5) * 10 + 3 — восьмеричная система
= (1 * 8 + 5) * 8 + 3 – в десятичной системе
= 107 – в десятичной системе
= 1‖0‖7 – в десятичной системе
= (1 * 10 + 0) * 10 + 7 – в десятичной системе
= (1 * 1010 + 0) * 1010 + 111- запись в двоичной системе
= 1101011 — запись в двоичной системе.

Собственно, этим можно заниматься весь день.

Важное замечание. В наших расчетах есть две строчки:

= (((((1 * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1 — запись в двоичной системе
= (((((1 * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 1 — восьмеричная система

Вторая строка, (((((1 * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 1 будет выглядеть абсолютно точно также и в 3-х, 4-х, … 8-ми, 16-ти и.д. -значной системе счисления.

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

Вывод

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

Я поискал в сети способы перевода одной системы в другую, но что-то везде всё упирается во взятие остатков, а прямого перевода через умножение я так и не нашел. Может плохо искал?
Ведь по факту, с точки зрения визуального представление, — это просто смещение числа по разрядам и всё… Странно как-то, что нет описания такого просто решения… Ибо больше напоминает математический фокус, чем что-то новое и необычное. В чем я не прав? Жду ваших замечаний.

Источник

Оцените статью
Разные способы