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

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

  • автор:

Урок 32. Перевод чисел между системами счисления

При программировании мы часто сталкиваемся с необходимостью перевода чисел между системами счисления, по основанию: 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
      Простой метод перевода:

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

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

      Началось все с простого калькулятора, который мог переводить из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную — Перевод числа в другие системы счисления.
      Потом один из пользователей запросил возможность переводить число из десятичной системы в систему с любым другим основанием.
      Так появился калькулятор, в котором можно было указывать основание системы счисления, в которую надо перевести десятичное число — Перевод из десятичной системы счисления.
      Ну а теперь наш пользователь попросил возможность переводить из любой системы счисления в любую — первод из одной системы в другую, и вот родился универсальный калькулятор.
      Вводим число, например, FF (напомню, что для систем счисления с основанием больше десяти традиционно используются заглавные латинские буквы), вводим основание системы счисления этого числа — 16. Потом вводим основание системы счисления, в которую надо преобразовать это число — 10. Получаем результат — 255 в десятичной системе счисления.

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

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

      Калькулятор перевода чисел имеет одно поле для ввода. В это поле необходимо ввести число которое Вы хотите перевести.

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

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

      После нажмите кнопку «ПЕРЕВЕСТИ» и результат появится в соответствующем поле. Если Вы хотите получить подробный ход решения, то нажмите на соответствующую ссылку.

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

      Любое число может быть легко переведено в десятичную систему по следующему алгоритму:

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

      Последние 20 расчетов на этом калькуляторе

      1. Перевод 0.E66 из шестнадцатиричной в десятичную CC Выполнен: 2024-01-07 01:07 МСК
      2. Перевод 0.E14 из шестнадцатиричной в десятичную CC Выполнен: 2023-12-28 19:35 МСК
      3. Перевод 0.000 из десятичной в двоичную CC Выполнен: 2023-12-25 23:30 МСК
      4. Перевод 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101 из двоичной в десятичную CC Выполнен: 2023-12-22 11:38 МСК
      5. Перевод 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101 из двоичной в десятичную CC Выполнен: 2023-12-22 11:35 МСК
      6. Перевод 0.E00000 из шестнадцатиричной в двоичную CC Выполнен: 2023-12-13 10:55 МСК
      7. Перевод 0.0 из 1-ричной в десятичную CC Выполнен: 2023-12-12 20:35 МСК
      8. Перевод 0.E08 из шестнадцатиричной в десятичную CC Выполнен: 2023-12-09 18:08 МСК
      9. Перевод 0.0E16 из шестнадцатиричной в десятичную CC Выполнен: 2023-12-06 14:21 МСК
      10. Перевод 0. из восьмеричной в двоичную CC Выполнен: 2023-11-29 02:42 МСК
      11. Перевод 0.E07 из шестнадцатиричной в 5-ричную CC Выполнен: 2023-11-27 13:17 МСК
      12. Перевод 0.0 из шестнадцатиричной в двоичную CC Выполнен: 2023-11-24 12:03 МСК
      13. Перевод 0.e10 из шестнадцатиричной в десятичную CC Выполнен: 2023-11-19 14:46 МСК
      14. Перевод 0.0E17 из шестнадцатиричной в двоичную CC Выполнен: 2023-11-13 14:38 МСК
      15. Перевод 0.000 из десятичной в восьмеричную CC Выполнен: 2023-11-06 20:48 МСК
      16. Перевод 0.E16 из шестнадцатиричной в десятичную CC Выполнен: 2023-11-01 21:36 МСК
      17. Перевод 0.00000000000000000 из двоичной в десятичную CC Выполнен: 2023-10-30 15:34 МСК
      18. Перевод 0.0E56042 из шестнадцатиричной в двоичную CC Выполнен: 2023-10-30 08:25 МСК
      19. Перевод 0.0000000 из двоичной в десятичную CC Выполнен: 2023-10-27 11:48 МСК
      20. Перевод 0000000.0 из двоичной в десятичную CC Выполнен: 2023-10-20 20:46 МСК

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

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

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

      Результат записываем в обратном порядке снизу вверх. Получается 81010 = 11001010102

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

      В программу ЕГЭ по информатике входят несколько задач, связанных с переводом чисел из одной системы в другую. Как правило, это преобразование между 8- и 16-ричными системами и двоичной. Это разделы А1, В11. Но есть и задачи с другими системами счисления, как например, в разделе B7.

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

      Таблица степеней числа 2:

      2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10
      2 4 8 16 32 64 128 256 512 1024

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

      Таблица двоичных чисел от 0 до 15 c 16-ричным представлением:

      0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
      0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
      0 1 2 3 4 5 6 7 8 9 A B C D E F

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

      Перевод целых чисел

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

      1. Ищем ближайшую к 810 степень двойки, не превосходящую его. Это 2 9 = 512.
      2. Вычитаем 512 из 810, получаем 298.
      3. Повторим шаги 1 и 2, пока не останется 1 или 0.
      4. У нас получилось так: 810 = 512 + 256 + 32 + 8 + 2 = 2 9 + 2 8 + 2 5 + 2 3 + 2 1 .

      Способ 1: Расставить 1 по тем разрядам, какие получились показатели у слагаемых. В нашем примере это 9, 8, 5, 3 и 1. В остальных местах будут стоять нули. Итак, мы получили двоичное представление числа 81010 = 11001010102 . Единицы стоят на 9-м, 8-м, 5-м, 3-м и 1-м местах, считая справа налево с нуля.

      Способ 2: Распишем слагаемые как степени двойки друг под другом, начиная с большего.

      2 9 = 1000000000 (1 и девять нулей) +
      2 8 = 100000000 (1 и восемь нулей) +
      2 5 = 100000 (1 и пять нулей) +
      2 3 = 1000 (1 и три нуля) +
      2 1 = 10 (1 и один ноль)

      А теперь сложим эти ступеньки вместе, как складывают веер: 1100101010 .

      Вот и всё. Попутно также просто решается задача «сколько единиц в двоичной записи числа 810?».

      Ответ — столько, сколько слагаемых (степеней двойки) в таком его представлении. У 810 их 5.

      Теперь пример попроще.

      Переведём число 63 в 5-ричную систему счисления. Ближайшая к 63 степень числа 5 — это 25 (квадрат 5). Куб (125) будет уже много. То есть 63 лежит между квадратом 5 и кубом. Тогда подберем коэффициент для 5 2 . Это 2.

      Получаем 6310 = 50 + 13 = 50 + 10 + 3 = 2 * 5 2 + 2 * 5 + 3 = 2235 .

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

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

      5478= 101 100 111
      5 4 7

      Ещё одно, например 7D6A16.

      7D6A16= (0)111 1101 0110 1010
      7 D 6 A

      Переведем в 16-ричную систему число 7368. Сначала цифры запишем тройками, а потом поделим их на четверки с конца: 7368 = 111 011 110 = 1 1101 1110 = 1DE16 . Переведем в 8-ричную систему число C2516. Сначала цифры запишем четвёрками, а потом поделим их на тройки с конца: C2516 = 1100 0010 0101 = 110 000 100 101 = 60458 . Теперь рассмотрим перевод обратно в десятичную. Он труда не представляет, главное не ошибиться в расчётах. Раскладываем число на многочлен со степенями основания и коэффициентами при них. Потом всё умножаем и складываем. E6816 = 14 * 16 2 + 6 * 16 + 8 = 3688 . 7328 = 7 * 8 2 + 3*8 + 2 = 474 .

      Перевод отрицательных чисел

      Здесь нужно учесть, что число будет представлено в дополнительном коде. Для перевода числа в дополнительный код нужно знать конечный размер числа, то есть во что мы хотим его вписать — в байт, в два байта, в четыре. Старший разряд числа означает знак. Если там 0, то число положительное, если 1, то отрицательное. Слева число дополняется знаковым разрядом. Беззнаковые (unsigned) числа мы не рассматриваем, они всегда положительные, а старший разряд в них используется как информационный.

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

      Итак, переведем число -79 в двоичную систему. Число займёт у нас один байт.

      Переводим 79 в двоичную систему, 79 = 1001111. Дополним слева нулями до размера байта, 8 разрядов, получаем 01001111. Меняем 1 на 0 и 0 на 1. Получаем 10110000. К результату прибавляем 1, получаем ответ 10110001 . Попутно отвечаем на вопрос ЕГЭ «сколько единиц в двоичном представлении числа -79?». Ответ — 4.

      Прибавление 1 к инверсии числа позволяет устранить разницу между представлениями +0 = 00000000 и -0 = 11111111. В дополнительном коде они будут записаны одинаково 00000000.

      Перевод дробных чисел

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

      Переведем число 0,6752 в двоичную систему.

      0 ,6752
      *2
      1 ,3504
      *2
      0 ,7008
      *2
      1 ,4016
      *2
      0 ,8032
      *2
      1 ,6064
      *2
      1 ,2128

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

      Получается 0,6752 = 0,101011 .

      Если число было 5,6752, то в двоичном виде оно будет 101,101011 .

      • Авторские методические материалы
      • Задачи по математике
      • Задачи по физике
      • Биология
      • Подготовка к ЕГЭ
      • Задачи по химии
      • Астрономия
      • Статьи об образовании
      • История науки

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

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