Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чопоров_Основы информатики

.pdf
Скачиваний:
49
Добавлен:
26.03.2016
Размер:
3.56 Mб
Скачать

двоичный код в двоичной системе счисления изображает число

2341, а не число 925.

Условимся изображать принадлежность числа к (Q - Р)- ичной системе счисления с помощью нижнего индекса (Q - Р) при данном числе, например: 92510= 1001001001012-10

Аналогично рассмотренной выше двоично-десятичной системе можно использовать и другие смешанные системы при различных значениях Р и Q. Особого внимания заслуживает случай, когда Р = Qz, где z – целое положительное число. В этом случае запись какого-либо числа в смешанной системе тождественно совпадает с изображением этого числа в системе счисления с основанием Q (что не имеет места в двоичнодесятичной системе в общем случае ).

Докажем это утверждение. Рассмотрим произвольное целое число N. В Р-ичной системе счисления это число будет записано в виде

pnpn-1p1p0,

основанном на представлении

N=pnpn+pn-1pn-1+…+p1p1+p0,

(3.10)

где pi, i = 0, 1, .... n являются базисными числами этой системы. Каждый коэффициент pi будет записываться в Q-ичной

системе счисления в виде

pi = qi,z-1 qi,z-2 qi,z qi,0

основанном на представлении

pi = qi,z-1Qz-1 + qi,z-2Qz-2 +… + qi,1Q1 + qi,0,

(3.11)

где qi,j – базисные числа системы счисления с основанием Q. Тогда в смешанной системе счисления число N будет

записываться в виде

101

N = qn,z-1 qn,z-2 qn,0 qn-1,z-1 qn-1,0 q0,z-1 q0,0

Подставляя (3.11) в (3.10) и учитывая соотношение Р = Qz , получим

N= qn,z-1Qnz+z-1 + qn,z-2Qnz+z-2 +…+ qn,0Qnz + qn-1,z-1Qnz-1 +

+qn-1,0Qnz-1 +…+

+q0,z-1Qnz-1 +…+ q0,z-1Qz-1 +…+ q0,0Q0

(3.12)

т. е. разложение числа N по степеням Q. Поэтому запись числа N в Q-ичной системе счисления, соответствующая разложению (3.12), будет иметь вид

N = qn,z-1 qn,z-2 qn,0 qn-1,z-1 qn-1,0 q0,z-1 q0,0 .

Как видно, эта запись тождественно совпадает с приведенной выше записью числа N в смешанной системе счисления, где каждая очередная группа из z цифр является просто изображением соответствующего коэффициента pi, в системе счисления с основанием Q.

Все сказанное выше относительно целых чисел автоматически переносится и на случай произвольных чисел. Таким образом, изображение числа x в Р-ичной системе счисления в случае Р = Qz является просто сокращенной записью изображения этого же числа х в Q-ичной системе.

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

102

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

При решении задач с помощью ЭВМ исходные данные обычно задаются в десятичной системе счисления; в этой же системе, как правило, нужно получить и окончательные результаты. Так как в современных ЭВМ данные кодируются в основном в двоичных кодах, то, в частности, возникает необходимость перевода чисел из десятичной в двоичную систему счисления и наоборот.

При рассмотрении правил перевода чисел из одной системы счисления в другую ограничимся только такими системами счисления, у которых базисными числами являются последовательные целые числа от 0 до Р-1 включительно, где Р

– основание системы счисления.

Задача перевода заключается в следующем. Пусть известна запись числа х в системе счисления с каким-либо основанием Р:

pnpn-1…p1p0p-1p-2…,

где рi – цифры Р-ичной системы (0 рi Р-1). Требуется найти запись этого же числа х в системе счисления с другим основанием Q:

qsqs-1…q1q0q-1q-2…,

где qi – искомые цифры Q-ичной системы (0 qi Q-1). При этом можно ограничиться случаем положительных чисел, так как перевод любого числа сводится к переводу его модуля и приписыванию числу нужного знака.

При рассмотрении правил перевода нужно учитывать, средствами какой арифметики должен быть осуществлен перевод, т.е. в какой системе счисления должны быть выполнены все необходимые для перевода действия. Условимся считать, что перевод должен осуществляться средствами Р-ичной арифметики.

103

Перевод Q P. Задача перевода произвольного числа х, заданного в системе счисления с основанием Q, в систему счисления с основанием Р сводится к вычислению полинома вида

X=qnQn + qn-1Qn-1 +…+ q1Q1 + q0Q0 + q-1Q-1 +…+ q-mQ-m (3.13)

Для получения Р-ичного изображения выражения (3.13) необходимо все цифры qi и число Q заменить Р-ичными изображениями и выполнить арифметические операции в Р- ичной системе счисления.

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

Перевод РQ. Так как для перевода любого числа достаточно уметь переводить его целую и дробную части, рассмотрим отдельно эти два случая.

1. Перевод целых чисел. Пусть известна запись целого числа N в системе счисления с основанием Р и требуется перевести это число в систему счисления с основанием Q. Так как N – целое, то его запись в Q-ичной системе счисления имеет вид

N = qsqs-1q1q0,

где qi – искомые цифры Q-ичной системы (0 qi < Q-1). Для определения q0 разделим обе части равенства:

N = qsQs+ qs-1Qs-1+…+ q1Q1+q0

(3.14)

на число Q, причем в левой части произведем деление, пользуясь правилами Р-ичной арифметики (так как запись числа N в Р-ичной системе счисления известна), а правую часть перепишем в виде

104

N/Q = qsQs+ qs-1Qs-1+…+ q1Q1+q0 / Q.

Приравнивая между собой полученные целые и дробные части (учитывая, что qi < Q):

[N/Q] = qsQs-1+ qs-1Qs-2+…+ q1, [N/Q]=q0/Q.

Таким образом, младший коэффициент q0 в разложении (3.14) определяется соотношением

Q0=Q[N/Q],

причем указанные здесь действия на самом деле не выполняются, так как q0 является просто остатком от деления N на Q.

Положим

N1=[N/Q]= qsQs-1+ qs-1Qs-2+…+ q1 .

Тогда N1 будет целым числом и к нему можно применить ту же самую процедуру для определения следующего коэффициента q1 и т. д.

Таким образом, при условии что N0 = N, перевод чисел с использованием Р-ичной арифметики осуществляется по следующим рекуррентным формулам:

qi = Q[Ni / Q],

(3.15)

Ni+1 = [Ni / Q] (i=0, 1, 2).

Этот процесс продолжается до тех пор, пока не будет получено Ni+1=0.

Заметим, что поскольку все операции выполняются в системе счисления с основанием Р, то в этой же системе будут получены искомые коэффициенты qi, поэтому их необходимо записать одной Q-ичной цифрой.

105

где q-i

2.Перевод дробных чисел. Пусть необходимо перевести

вQ-ичную систему счисления правильную дробь х (0 < х < 1 ), заданную в Р-ичной системе счисления.

Так как х < 1, то число х в Q-ичной системе счисления можно представить в виде полинома

x = q-1Q-1 + q-2Q-2 + … + q-m Q-m +…,

(3.16)

(i = 1, 2, ...) – искомые коэффициенты Q-ичного разложения числа х. Для определения q-1 умножим обе части равенства (3.16) на число Q, причем в левой части произведем умножение, пользуясь правилами Р-ичной арифметики (так как запись числа x в Р-ичной системе счисления известна), а правую часть перепишем в виде

xQ = q-1 + q-2Q-1 + q-mQ-m+… .

Приравняем между собой полученные в правой части этого выражения целые и дробные части (учитывая, что 0 < qi < Q):

[xQ]=q-1 ,

[xQ]=q-2Q-1 + … + q-mQ-m+1 +… .

Таким образом, младший коэффициент q-1 в разложении (3.16) определяется соотношением

q-1 = [xiQ].

Положим,

x1 = [xQ] = q-2Q-1 +…+ q-mQ-m+1 +… .

Тогда x1 будет правильной дробью и к этому числу можно применить ту же самую процедуру для определения следующего коэффициента q-2 и т. д.

Таким образом, при условии, что x0=x, перевод дроби с

106

использованием Р-ичной арифметики осуществляется по следующим рекуррентным формулам:

q-(i+1) = [xiQ],

 

xi+1 = [xiQ] (i=0,1,2,…).

(3.17)

Этот процесс продолжается до тех пор, пока не будет получено xi+1=0 или не будет достигнута требуемая точность изображения числа.

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

Если единица младшего разряда числа х, заданного в Р- ичной системе счисления, есть P-k, то в его Q-ичной записи следует сохранить z разрядов после запятой, где z удовлетворяет условию

Q-z > P-k/2 > Q-(z+1) ,

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

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

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

Пример. Число 2210 перевести в двоичную систему счисления.

107

22 2

2

22 11

2

5

10 2

2

4 1

2

2210 = 101102

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

Пример. Число 57110 перевести в восьмеричную систему счисления.

_571 8

8

56_ _71

8

_8

_11 64

1

8

57110 = 10738

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

Пример. Число 746710 перевести в шестнадцатеричную систему счисления.

108

7467 16

16

7456 466

16

29

464

1

16

746710 = 1D2B16

3.5.Представление данных в компьютере

3.5.1.Представление целых чисел без знака и со знаком

Введем основные понятия на примере 4-битовых машинных слов. Такой размер слова обеспечивает хранение десятичных чисел только от 0 до 15 и поэтому не представляет практического значения. Однако они менее громоздки, а основные закономерности, обнаруженные на примере 4- битовых слов, сохраняют силу для машинного слова любого размера.

Предположим, что процессор ЭВМ способен увеличивать (прибавлять единицу) и дополнять (инвертировать) 4-битовые слова. Например, результатом увеличения слова 1100 является 1101, а результатом дополнения этого слова является 0011. Рассмотрим слово 0000, представляющее десятичное число 0. В результате увеличения содержимое этого слова станет равным 0001, что соответствует десятичному числу 1. Продолжая последовательно увеличивать 4-битовые слова, придем к ситуации, когда, увеличивая слово 1111 (которое представляет десятичное число 15), получим в результате слово 0000, т. е. 111+1 = 0000 (15+1=0), при этом получили неверную арифметическую операцию и вернулись в исходное состояние. Это произошло из-за того, что слово памяти может состоять только из конечного числа битов. Таким образом, числовая система ЭВМ является конечной и цикличной.

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

109

конфигурацию 1111 принять за код для -1. Тогда 1110 интерпретируется как -2; 1101 – 3 и т.д. до 1000 – 8. Тем самым получили другую числовую систему – со знаком, содержащую как положительные, так и отрицательные числа. В этой системе половина четырехбитовых конфигураций, начинающаяся с единицы, интерпретируется как отрицательные числа, а другая половина, начинающаяся с 0, – как положительные числа или нуль. Поэтому старший бит числа (третий по счету, если нумерацию битов начинать с нуля справа налево) называется знаковым битом. Числовая система со знаком также конечна и циклична, однако в этом случае арифметически неверный результат даст попытка увеличить число 8 на единицу. Преимущество введения числовой системы со знаком заключается в возможности представления как положительных, так и отрицательных чисел.

Если знаковый бит равен нулю, то значение числа легко вычисляется – игнорируется знаковый бит, а оставшиеся три бита интерпретируются как двоичный код десятичного числа. Например, слово 0110 представляет двоичное число 110, которое равно десятичному числу 6.

Для оценки отрицательного числа нужно изменить его знак. Рассмотрим четырехбитовое число k в системе со знаком. Тогда –k = (-1-k)+1, следовательно, для вычисления значения – k необходимо вычесть k из -1 (т.е. из 1111) и затем прибавить 1 (т.е. 0001). Заметим, что операция вычитания всегда возможна, никогда не требует заема и равнозначна операции инвертирования битов вычитаемого. Например, 1111 – 1011 = 0100, здесь в вычитаемом, равном 1011, единицы перешли в нули, а нуль – в единицу. Инвертирование битов в слове называется дополнением до единицы. Для определения отрицательного значения числа k надо к его дополнению до единицы прибавить единицу (согласно вышеприведенному равенству). Инвертирование битов в слове с добавлением единицы к младшему биту называется дополнением до двух. Например, требуется найти, какое число закодировано в слове 1001. Для этого сначала выполняем операцию инвертирования

110