
- •1.4. Алфавитное представление и преобразование информации
- •Глава 2
- •2.1. Непозиционные системы счисления
- •2.2. Позиционные системы счисления
- •Неоднородные позиционные системы счисления
- •Однородные позиционные системы счисления
- •2.3. Кодированные позиционные системы счисления
- •2.4. Системы счисления специального назначения
- •2.6. Символические системы счисления
- •2.7. Перевод чисел из одной системы счисления в другую
- •Перевод целых чисел из одной позиционной системы счисления в другую
- •2.8. Выбор системы счисления для применения эвм
- •2.9. Двоичная система счисления
- •2.10. Представление двоичных чисел в эвм
- •2.11. Точность представления чисел в эвм
- •Глава 3
- •3.1. Основные понятия
- •3.2. Операция алгебраического сложения в эвм
- •3.3. Операция сдвига
- •3.4. Сложение чисел в машинах с плавающей запятой
- •8.5. Округление чисел в эвм
- •3.6. Точность выполнения операций в машине с плавающей запятой
- •3.7. Вычисления с двойной точностью
- •Глава 4
- •4.1. Общие сведения об операции умножения
- •4.2. Умножение, выполняемое методом накопления частичных произведений
- •4.3. Сравнение схем умножения методом накопления
- •4.4. Методы ускорения операции умножения
- •4.5. Умножение чисел, заданных в дополнительном коде
- •4.6. Умножение чисел в машинах с плавающей запятой
- •4.7. Особенности выполнения операции умножения в современных эвм
- •4.8. Деление чисел с восстановлением остатков
- •4. 9. Деление без восстановления остатков
- •4.10. Машинные схемы деления
- •4.11. Деление чисел в дополнительном коде
- •4.13. Деление чисел в машинах с плавающей запятой
- •Глава 6
- •6.1. Сложение в прямых д-кодах
- •6.2. Сложение чисел в инверсных д-кодах
- •Для кода д2
- •6.3. Сдвиг д-кодов
- •6.4. Умножение чисел в д-кодах
- •6.5. Деление чисел в д-кодах
- •6.6. Перевод чисел в д-кодах
Перевод целых чисел из одной позиционной системы счисления в другую
Пусть задано число А в произвольной позиционной системе счисления по основанию 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
Таким образом, для перехода от восьмеричного представления к десятичному нужно производить вычитание, так как десятичная запись короче, чем восьмеричная; аналогичным образом при переходе от десятичного представления к восьмеричному следует суммировать. При проведении вычислений используется новое основание.