Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
с. работа - Логика.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.16 Mб
Скачать

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

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

A = а n p n + а n-1 p n-1 + … + а 1 p 1 + а 0 p0 , (2.5)

где а i = 0 — (р — 1) — база новой системы счисления. Выражение (2.5) можно записать в виде

A = A1 p + а 0 ,

где — целая часть частного; а0 — остаток от деления А на р, который является цифрой младшего разряда искомого числа, записанной в символах старой системы счисления.

При делении числа А1 на р. тем же способом получим остаток a1 и т. д. Иными словами, выражение (2.5) записывается по схеме Горнера:

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

Таким образом, в результате серии делений исходного числа на основание новой системы счисления р находим коэффициенты

П ри этом деление продолжается до тех пор, пока не окажутся выполненными соотношения:

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

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

а) при переводе из десятичной системы последовательно делим исходное число на основания 2 и 8:

т. е. получим 13810 = 100010102 = 2128.

б) при переводе из двоичной системы счисления в десятичную исходное число необходимо делить на основание новой системы, т. е. 10102.

Деление выполнять в двоичной системе трудно. Поэтому на практике при необходимости перевода чисел из системы с малым основанием в систему с большим основанием удобно пользоваться общей записью чисел в виде полинома (2.5). В общем случае можно вычислить многочлен непосредственно в виде

представив в системе по основанию р аi и l и выполнив все действие по правилам арифметики основания р. Например, при перевод двоичных чисел в десятичную систему счисления на практике обычн< подсчитывают сумму степеней основания 2, при которых коэффициен ты ai равны единице. Расчеты ведутся при этом в десятичной си стеме счисления.

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

Перевод правильных дробей

Пусть правильную дробь А, заданную в произвольной позиционной системе счисления по основанию l, необходимо перевести в новую систему с основанием р, т. е. преобразовать ее к виду

A = а -1 p-1 + а -2 p-2 + … + а -k +1p k+1 + а -k p-k , (2.6)

Если, аналогично переводу целых чисел, разделить обе части выражения (2.6) на р-1, т. е. умножить на р, то получим

г де — дробная часть произведения; ai— целая часть результата. Полученная при этом цифра целой части результата и будет первой цифрой искомого числа.

Умножив дробную часть результата А1 снова на р, получим

где — дробная часть произведения (нового); a-2 — следующая цифра искомого числа. Следовательно, при переводе выражение (2.6) представляется по схеме Горнера:

Умножая его последовательно k раз на основание р, получим искомое число в новой системе счисления. В отличие от целых чисел, точный перевод возможен не для всех правильных дробей. Погрешность при этом составляет младшего разряда числа в новой системе.

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

Пример. Перевести правильную дробь 0,536 из десятичной системы счисления в двоичную и восьмеричную н выполнить обратный перевод:

а. При переводе из десятичной системы в двоичную умножаем исходную дробь на 2, а при переводе в восьмеричную — на 8:

целая часть

дробная часть

целая часть

дробная часть

0

1

0

0

0

1

0

0

1

0

536

072

144

288

576

152

304

608

216

432

0

4

2

2

536

8

288

8

304

8

432

Получим: 0,53610 = 0,1000100102 = 0,4228.

б. При переводе из двоичной системы в десятичную умножаем исходное двоичное число на 10102:

0

10001001

1010

1

+

100

0001001

01001

101

0101101

1010

0

+

010

101101

1101

11

100001

1010

1

+

100

00001

001

101

00101

В результате получим:

т.е. 0,100010012=0,53510.

Расхождение в младшем разряде объясняется усечением результатов прямого и обратного переводов.Можно перевести правильную дробь в новую систему счисления, представив ее в виде

При этом все действия выполняются по правилам арифметики но­вого основания (b-i и l представляются по основанию р). В этом слу­чае необходимо внимательно следить за ошибками, которые могут появиться в результате усечения или округления при делении на l.

Перевод неправильных дробей

При переводе неправильных дробей необходимо отдельно перевести целую и дробную части числа по вышеприведенным правилам перево­да и записать в новой системе счисления, оставив неизменным поло­жение запятой. В тех случаях, когда желательно единообразие дей­ствий, необходимых для перевода, заданное число А вначале либо делят на рn (п — целое положительное) так, чтобы А /рn < 1, либо умножают на pk (k — число требуемых разрядов дробной части чис­ла А, представленного в новой системе счисления по основанию р) и округляют Apk до ближайшего целого числа. Затем полученную дробь или целое число переводят в р-ичную систему счисления. Для сохранения количественного эквивалента полученный р-ичный ре­зультат надо умножить или разделить соответственно на рn или рk. Практически это означает перенос запятой на п разрядов вправо в первом случае и на k разрядов влево во втором случае.

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

Если основания систем счисления кратны друг другу, т. е. связа­ны зависимостью

то каждая цифра системы счисления в основанием q может быть изо­бражена т цифрами в системе с основанием р.

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

Например, при переводе восьмеричного числа 2128 = 13810 в дво­ичную систему счисления достаточно каждую цифру восьмеричного

числа записать в виде двоичной триады, так как 8 = 23

2128 = 0100010102.

При переводе, например, двоичного числа в шестнадцатеричное достаточно каждую тетраду исходного числа записать в виде шестнадцатеричной цифры

0100010102 = 8А16.

С целью сокращения количества действий, необходимых для пере­вода из l-ичной системы в р-ичную, можно вначале произвести пере­вод в pm-ичную систему счисления, а затем из рm в р-ичную, что вы­полняется легко. Например, при переводе из десятичной системы в восьмеричную и наоборот можно воспользоваться следующими прос­тыми приемами.

При преобразовании из восьмеричной системы в десятичную за­писываем заданное в восьмеричной системе число, затем на i-м шаге удваиваем первые i цифр, пользуясь десятичной арифметикой, и от­нимаем полученный результат от первых (i + 1) цифр по правилам десятичной арифметики. Если заданное число состоит из п цифр, то этот процесс заканчивается через (п - 1) шагов. С целью избежа­ния возможных ошибок вводят разделительную точку, чтобы выде­лить удваиваемые цифры.

Пример. Преобразовать число 2128 к десятичному виду

т.е 2128=13810 .

Для преобразования целых чисел, представленных в десятичной системе счисления, в восьмеричную систему можно применить анало­гичную процедуру. Записываем заданное в десятичной системе чис­ло. На i-м шаге, пользуясь восьмеричной арифметикой, удваиваем первые i цифр и прибавляем, также при помощи восьмеричной ариф­метики, эти удвоенные цифры к первым (i + 1) цифрам. Если заданное число состоит из п цифр, то этот процесс закончится через (п — 1) шагов.

Пример. Преобразовать число 13810 к восьмеричному виду.

т.е. 13810=2188

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