Лекционный курс по основам информатики, страница 6
Описание файла
Документ из архива "Лекционный курс по основам информатики", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Лекционный курс по основам информатики"
Текст 6 страницы из документа "Лекционный курс по основам информатики"
Итак, числа, представленные в дополнительном коде, складываются по правилам двоичного сложения, но без учета каких либо переносов за пределы старшего разряда. Рассмотрим это на следующих примерах:
+2 0010 -2 1110
+ + + +
+5 0101 -6 1010
+7 0111 -8 1000
+5 0101 +3 0011
+ + + +
-4 1100 -7 1001
+1 0001 -4 1100
Еще одним достоинством дополнительного кода является то, что нуль, в отличие от прямого и обратного кодов, представляется одним кодом. Наличие 0 в знаковом бите при представлении нуля определяет его как величину положительную, что согласуется с математической теорией чисел и соглашениями, принятыми во всех зыках программирования.
Подытоживая наше знакомство с дополнительным кодом, обобщим величину десятичного значения числа в дополнительном коде. Так как вес старшего, т.е. значащего разряда в данном случае равен –2n-1, а не +2n-1, как в прямом коде, то диапазон представления чисел охватывает значения от –2n-1 до +2n-1-1.
Умножение двоичных чисел происходит еще проще, чем сложение, ведь они обладают рекордно малой таблицей умножения:
Множимое | Множитель | Произведение |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Другими словами, процедура умножения сводится к записи 0, если разряд множителя равен 0, или 1, если разряд =1.
Двоичное деление сводится к выполнению операций умножения и вычитания, как в десятичной системе. Выполнение этой процедуры - выбор числа, кратного делителю, и предназначенного для уменьшения делимого, здесь проще, так как таким числом может быть либо 0, либо сам делитель.
Для деления чисел со знаком в дополнительном коде существует несколько методов. Простейший из них - преобразование чисел в положительные с последующим восстановлением знака результата. При наладке аппаратных средств (программ BIOS и т.д.) и написании новых программ (особенно на языках низкого уровня типа ассемблера) часто возникает необходимость заглянуть в память машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последовательностями нулей и единиц, очень неудобных для восприятия. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, например, комбинацией из 16 нулей и единиц. Для облегчения восприятия двоичного числа решили разбить его на группы разрядов, например, по три или четыре разряда. Эта идея оказалась удачной, так как последовательность из 3 бит имеет 8 комбинаций, а последовательность из 4 бит - 16 комбинаций. Числа 8 и 16 - степени двойки, поэтому легко находить соответствие между двоичными числами. Развивая эту идею, пришли к выводу, что группы разрядов можно закодировать, сократив при этом последовательность знаков. Для кодировки трех битов (триад) требуется 8 цифр, и поэтому взяли цифры от 0 до 7 десятичной системы. Для кодировки четырех битов (тетрад) необходимо 16 знаков, и взяли 10 цифр десятичной системы и 6 букв латинского алфавита: A, B, C, D, E, F. Полученные системы, имеющие в основании 8 и 16, назвали соответственно восьмеричной и шестнадцатеричной.
Десятичное | Восьмеричное | Триады | Шестнадцатеричное | Тетрада |
0 | 0 | 000 000 | 0 | 0000 |
1 | 1 | 000 001 | 1 | 0001 |
2 | 2 | 000 010 | 2 | 0010 |
3 | 3 | 000 011 | 3 | 0011 |
4 | 4 | 000 100 | 4 | 0100 |
5 | 5 | 000 101 | 5 | 0101 |
6 | 6 | 000 110 | 6 | 0110 |
7 | 7 | 000 111 | 7 | 0111 |
8 | 10 | 001 000 | 8 | 1000 |
9 | 11 | 001 001 | 9 | 1001 |
10 | 12 | 001 010 | 10 | 1010 |
11 | 13 | 001 011 | A | 1011 |
12 | 14 | 001 100 | B | 1100 |
13 | 15 | 001 101 | C | 1101 |
14 | 16 | 001 110 | D | 1110 |
15 | 17 | 001 111 | E | 1111 |
16 | 20 | 010 000 | F | 1 0000 |
В таблице приведены числа в десятичной, восьмеричной и шестнадцатеричной системах и соответствующие группы бит в двоичной системе.
16-pазpядное двоичное число со знаковым разрядом можно представить 6-pазpядным восьмеричным, причем старший байт в нем будет принимать значения лишь 0 или 1. В шестнадцатеричной системе такое число займет 4 разряда.
Легкость преобразования двоичных чисел в восьмеричные и шестнадцатеричные видна из следующего примера:
1100001111010110
1100 0011 1101 0110 1 100 011 111 010 110
C 3 D 6 1 4 1 7 2 6
Из этого примера следует, что для преобразования двоичного числа в восьмеричное необходимо двоичную последовательность разбить на триады справа налево и каждую группу заменить соответствующей восьмеричной цифрой. Аналогично поступаем и при преобразовании в шестнадцатеричный код, только двоичную последовательность разбиваем на тетрады и для замены используем шестнадцатеричные знаки.
Также просто осуществляется и обратное преобразование. Для этого каждую цифру восьмеричного или шестнадцатеричного числа заменяют группой из 3 или 4 бит.
Например:
A B 5 1 1 7 7 2 0 4
1010 1011 0101 0001 1 111 111 010 000 100
Арифметические операции над числами в восьмеричной или шестнадцатеричной системах проводятся по тем же правилам, что и в десятичной системе. Только надо помнить, что если имеет место перенос, то он производится не после 10, а после 8 или 16.
Например:
C 0A 5
+ 2 4 8 6
E 5 2 B
перенос
Для перевода из десятичной системы в другую систему обычно применяется метод последовательного деления исходного числа на основание системы счисления, в которую переводится число. Полученный остаток после первого деления является младшим разрядом нового числа. Образовавшееся частное снова делится на основание. Из остатка получаем следующий разряд и т.д. Например:
2 12 2
2 12 106 2
0 106 53 2
0 52 26 2
1 26 13 2
0 0 12 6 2
1 6 3 2
0 2 1 (старший разряд)
1
21210 = 110101002
А теперь переведем десятичное число 31318 в восьмеричную систему:
3 1318 8
31312 3914 8
6 3912 489 8
2 488 61 8
1 56 7 (старший разряд)
5
3131810 = 751268
Перевод из одной системы в другую дробных чисел производится по правилу, требующему не делить, а умножать дробную часть на величину нового основания. В качестве примера переведем десятичное число 2638.75 в шестнадцатеричную систему. Это действие производится в два этапа - сначала для целой, а затем для дробной части:
2 638 16 0.7516=12
2 624 164 16
14 160 10 (старший разряд целой части)
4
2638.7510 = A4E.C16
3.5. Представление информации в форме с фиксированной и плавающей точкой
При рассмотрении систем счисления мы оперировали в основном целыми числами, т.е. числами у которых точка, отделяющая целую часть числа от дробной, располагается справа от крайнего правого разряда. Но в инженерных и научных расчетах не обойтись без учета дробных чисел. Тогда точку можно располагать левее от крайних правых разрядов, добиваясь при этом необходимой точности вычислений. Так, в 16-pазpядном двоичном числе расположение точки справа от левого крайнего разряда даст максимальную точность при вычислении положительных значений синуса:
0.0000000000000002 = 010
0.1000000000000002 = 0.510
1.0000000000000002 = 1.010
Разряд двоичного числа представляется в ЭВМ некоторым техническим устройством, например триггером, двум различным состояниям которого приписывают значения 0 или 1. Набор соответствующего количества таких устройств служит для представления многоразрядного двоичного числа.
В общем случае положение точки в числе может быть любым, но в дальнейших операциях неизменным. Такое представление числа называется представлением в формате с фиксированной точкой.
При представлении чисел с фиксированной точкой положение запятой фиксируется в определенном месте относительно разрядов числа. Обычно подразумевается, что точка (запятая) находится или перед старшим разрядом, или после младшего. В первом случае могут быть представлены числа, которые по модулю меньше 1, во втором – только целые числа.
Знак | 2-1 | 2-2 | … | … | 2-31 |
0 1 2 3 4 5 6 ….. 31 - представление двоичных чисел с фиксированной точкой в виде 32-разрядных слов для случая закрепления точки перед старшим разрядом.
Знак | 230 | … | … | … | 20 |
0 1 2 3 4 5 6 ….. 31 - представление двоичных чисел с фиксированной точкой в виде 32 разрядных слов для случая закрепления точки после младшего разряда.
Для кодирования знака числа используется «знаковый» разряд: 0 - это + (плюс), 1 - это – (минус). Наибольшее положительное число, представимое в первой разрядной сетке, равно 0,1..1 = 1-2-31 , а наименьшее число 0,00…01 = 2-31 Таким образом, в разрядной сетке могут быть представлены числа в диапазоне от –(1-2-31) до -2-31 и от 2-31 до (1-2-31). Диапазон чисел, для второго случая: