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




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

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

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

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

Чтобы определить число, недостаточно знать тип и алфавит системы счисления. Для этого необходимо еще использовать правила, которые позволяют по значениям цифр установить значение числа. Простейшим способом записи натурального числа является изображение его с помощью соответствующего количества палочек или черточек. Таким способом можно обозначить небольшие чисел. Следующим шагом было изобретение специальных символов (цифр). В непозиционной системе каждый знак в записи независимо от места означает одно и то же число. Хорошо известным примером непозиционной системы счисления является римская система, в которой роль цифр играют буквы алфавита: І - один, V - пять, Х - десять, С - сто, L - пятьдесят, D -пятьсот, М - тысяча. Например, 324 = СССХХІ. В непозиционной системе счисления арифметические операции выполнять неудобно и сложно.

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

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

Общеупотребительной формой записи числа является сокращенная форма записи разложения по степеням основы системы счисления, например

130678=1*105+3*104+0*103+6*102+7*101+8

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

Проблема выбора системы счисления для представления чисел в памяти компьютера имеет большое практическое значение. В случае ее выбора обычно учитываются такие требования, как надежность представления чисел при использовании физических элементов, экономичность (использование таких систем счисления, в которых количество элементов для представления чисел из некоторого диапазона было бы минимальном). Для изображения целых чисел от 1 до 999 в десятичной системе достаточно трех разрядов, то есть трех элементов. Поскольку каждый элемент может находиться в десяти состояниях, то общее количество состояний - 30, в двоичной системе счисления: 99910=11111002, необходимое количество состояний - 20 (индекс внизу числа - основа системы счисления).

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

+ 0 1 * 0 1

0 0 1 0 0 0

1 1 10 1 0 1

 

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

Таблица 1

10 2 8 16

0 0000 0 0

1 0001 1 1

2 0010 2 2

3 0011 3 3

4 0100 4 4

5 0101 5 5

6 0110 6 6

7 0111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

15 1111 17 F

 

Для отладки программ и в других ситуациях в программировании актуальной является проблема перевода чисел из одной позиционной системы счисления в другую. Если основа новой системы счисления равняется некоторой степени старой системы счисления, то алгоритм перевода очень простой: нужно сгруппировать справа налево разряды в количестве, равном показателю степени и заменить эту группу разрядов соответствующим символом новой системы счисления. Этим алгоритмом удобно пользоваться при переводе числа из двоичной системы счисления в восьмиричную или шестнадцатиричную. Например, 101102= 10110 =268, 10111002= 1011100 =5C8

Перевод чисел из восьмиричной или шестнадцатиричной систем счисления в двоичную происходит по обратному правилу: один символ старой системы счисления заменяется группой разрядов новой системы счисления, в количестве равном показателю степени новой системы счисления. Например, 4728= 100111010 =1001110102, B516= 10110101 =101101012

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

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

1. Для перевода чисел из системы счисления с основой p в систему счисления с основой q, используя арифметику новой системы счисления с основой q, нужно записать коэффициенты разложения, основы степеней и показатели степеней в системе с основой q и выполнить все действия в этой самой системе. Очевидно, что это правило удобно при переводе в десятичную систему счисления. Например:

из шестнадцатиричной в десятичную:

92C816=9*10163+2*10162+C*10161+8*10160= 9*16103+2*16102+12*16101+8*16100=37576

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

7358=7*1082+3*1081+5*1080= 7*8102+3*8101+5*8100=47710

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

1101001012=1*1028+1*1027+ 0*1026+1*1025+0*1024+0*1023+ 1*1022+0*1021+1*1020= 1*2108+1*2107+0*2106+1*2105+ 0*2104+0*2103+1*2102+0*2101+ 1*2100=42110

2. Для перевода чисел из системы счисления с основой p в систему счисления с основой q с использованием арифметики старой системы счисления с основой p нужно:

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

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

Пример: 999,3510=1111100111,010112

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: