Информация и данные

Разбор и сборка

Показывать лекцию целиком

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

Nk = ck * 10k + ck-1 * 10k-1 + … + c1 * 101 + c0 * 100 (*)

Примеры: Число 1234 в десятичной системе можно записать в виде: 1*103 + 2*102 + 3*101 + 4*100

Число 11012 в двоичной системе можно записать в виде: 1*103 + 1*102 + 0*101 + 1*100

Поскольку в двоичной системе число 10 равно 2 в десятичной системе то последнюю запись в десятичном представлении можно записать в виде: 1*23 + 1*22 + 0*21 + 1*20

В любой системе счисления основание системы p представимо числом 10. Поэтому для любой системы справедлива запись:

Nk = ck * pk + ck-1 * pk-1 + … + c1 * p1 + c0 * p0 (**)

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

Запись (**) является основой для того чтобы разобрать число на цифры, если известно основание p. Задача разложения числа по степеням основания (задача разбора числа) называется задачей перевода десятичного числа в систему с основанием p.

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

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

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

101112 = 1*20 + 1*21 + 1*22 + 0*23 + 1*24 = 1 + 2 +4 + 16 = 2310

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

Используя базисное соотношение (**), запишем число Nk в виде:

Nk = (ck * pk-1 + ck-1 * pk-2 + … + c1) * p1 + c0 * p0 = Nk-1 * p + c0 (***)

Сведем нашу задачу к более простой задаче, как зная Nk получить последнюю цифру этого числа - c0 и число Nk-1,

Две замечательные операции над целыми числами помогают решить нашу задачу:

  • Операция – остаток от деления нацело позволяет получить последнюю цифру;
  • Операция – деление нацело позволяет получить число, отбрасыванием его последней цифры.
  • В математике и программировании нет общепринятых обозначений этих важных операций. В языке Pascal эти операции обозначаются словами: mod (остаток) и div (деление нацело). Такие же обозначения приняты при записи на алгоритмическом языке, применяемом при записи школьных программ. В языках С, С++, Java, C# операцию взятия остатка обозначает знак ‘%’, деление нацело -знак ‘/’ (предполагается, что операнды представляют целые числа). Справедливы следующие соотношения:

    С0 = Nk mod p; Nk-1 = Nk div p;

    С0 = Nk % p; Nk-1 = Nk / p; (****)

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

    Шаг 1 с0 = 78 mod 8 = 6; N = 78 div 8= 9

    Шаг 2 с1 = 9 mod 8 = 1; N = 9 div 8 = 1;

    Шаг 3 c2 = 1 mod 8 = 1; N = 1 div 8 = 0; Stop

    7810 = 1168 = 64 + 8 + 6 = 7810

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

    Задачи для самостоятельного решения:

  • Дано десятичное число N = 1789. Перечислить его цифры, начиная с младшей, в десятичной системе.
  • Дано десятичное число N = 1789. Перечислить его цифры, начиная с младшей, в двоичной системе.
  • Дано десятичное число N = 1789. Перечислить его цифры, начиная с младшей, в троичной системе.
  • Дано десятичное число N = 1789. Перечислить его цифры, начиная с младшей, в восьмеричной системе.
  • Дано десятичное число N = 1789. Перечислить его цифры, начиная с младшей, в шестнадцатеричной системе.
  • Перечислены цифры числа, начиная с младшей, - { 9, 7, 5, 0, 3}. Запишите число в десятичной системе.
  • Перечислены цифры числа, начиная с младшей, - { 1, 0, 1, 0, 1}. Запишите число в двоичной системе. Чему оно равно в десятичной системе.
  • Перечислены цифры числа, начиная с младшей, - { 2, 0, 1, 0, 2}. Запишите число в троичной системе. Чему оно равно в десятичной системе.
  • Перечислены цифры числа, начиная с младшей, - { 7, 0, 5, 0, 1}. Запишите число в восьмеричной системе. Чему оно равно в десятичной системе.
  • Перечислены цифры числа, начиная с младшей, - { B, 0, A, C, 1}. Запишите число в шестнадцатеричной системе. Чему оно равно в десятичной системе.
  • Вернуться к учебному плану