- •2. Основы представления информации
- •2.1. Системы счисления
- •2.2. Перевод чисел из одной системы счисления в другую
- •2.2.1. Перевод чисел в десятичную сс10
- •2.2.2. Перевод чисел из десятичной сс в другие
- •2.3. Алгоритмы выполнения арифметических операций в различных сс
- •2.4. Комбинированные системы счисления
- •2.5. Кодирование чисел в эвм
- •2.6. Арифметические операции над двоичными числами в обратном и дополнительном кодах
- •2.6.1. Сложение чисел
- •2.7. Формы представления чисел и размещение их в памяти эвм
2.5. Кодирование чисел в эвм
Применение специальных кодов чисел позволяет все основные вычислительные операции свести к операции сложения или к операции сложения и сдвига.
Операция сложения положительных чисел выполняется в ЭВМ в прямом коде. Этот же код используется для хранения положительных и отрицательных чисел в памяти машины. Отрицательные числа при выполнении операции вычитания представляются в ЭВМ двумя кодами - обратным и дополнительным.
Прямой код любого двоичного числа X, представленного правильной дробью, имеет вид:
Пусть, например, X=0,110011. Тогда в прямом коде положительное и отрицательное число представляются так:
положительное [X]пр= 0,110011,
отрицательное [X]пр= 1-(-0,110011)=1,110011.
Из примера видно, что нуль или единица в целой части числа кодируют знак числа: 0 - число положительное, 1 - число отрицательное.
Обратный код двоичного числа X <1 образуется так: обратный код положительного числа равен его прямому коду, т.е. [X]обр=[X]пр, обратный код отрицательного числа получается, если в числовых разрядах нули заменить единицами, а единицы нулями, при этом в знаковом разряде должна быть единица, т.е. код отрицательного числа.
Пусть, например, [X]пр= -0,10100, тогда [X]обр=1,01011.
Дополнительный код двоичного числа X<1 имеет вид
Пусть по-прежнему X=0,110011. Тогда в дополнительном коде положительное число будет представлено так же, как и в прямом, т.е. [X]доп=0,110011, а отрицательное будет равно [X]доп=10+(-0,110011)=1,001101.
Для записи отрицательного двоичного числа в дополнительном коде необходимо в знаковом разряде поставить единицу, все цифры рядов прямого кода числа инвертировать, т.е. заменить нули на единицы, а единицы на нули и к младшему цифровому разряду прибавить единицу.
2.6. Арифметические операции над двоичными числами в обратном и дополнительном кодах
2.6.1. Сложение чисел
Сложение чисел с фиксированной запятой осуществляется в обратном или дополнительном кодах в такой последовательности действий:
исходные числа записываются в принятом для данной машины коде;
производится порязрядное сложение кодов чисел, включая и знаковые разряды;
единица переноса добавляется к младшему разряду суммы, если операция выполняется над числами в обратном коде, или не учитывается - если в дополнительном коде;
производится анализ на переполнение разрядной сетки.
Операция вычитания в ЭВМ заменяется операцией сложения в обратном или дополнительном коде.
Пример 7. Сложить два числа X=0,1011 и Y=-0,01101 в обратном и дополнительном кодах.
Изображение X и Y в прямом коде
[X]пр=0,10111; [Y]пр=1,01101.
Запишем X и Y в обратном и дополнительном кодах и выполним их сложение:
[X]об= 0,10111 [X]доп= 0,10111
[Y]об= 1,10010 [Y]доп= 1,10011
10,01001 10,01010
+1
X+Y= 0,01010 X+Y= 0,01010
При выполнении операции сложения над числами, представленными в обратном и дополнительном кодах, результат сложения будет получен в этих же кодах. Знаковые разряды чисел складываются так же, как и цифровые. В случае возникновения единицы переноса в знаковом разряде при сложении чисел в обратном коде эта единица складывается с содержимым младшего цифрового разряда суммы.
При сложении чисел в дополнительном коде единица переноса из знакового разряда, в случае ее возникновения, не учитывается.
Следует иметь в виду, что при сложении двоичных чисел с различным числом разрядов необходимо числа представить с одинаковым числом разрядов.
Умножение чисел осуществляется в прямом коде. Процесс умножения состоит из операций сложения и сдвига множимого или сумм частных произведений. Умножение может производиться начиная с младшего или старшего разряда множителя. В первом случае сдвиг частных произведений производится влево, а во втором - вправо. Знак произведения получается в результате сложения знаков сомножителей. При одинаковых знаках сомножителей знак произведения положительный, при разных знаках - отрицательный (0+0=0, 1+1=0, 1+0=1, 0+1=1).
Пример 8. Найти произведение двух чисел X=0,1101 и Y=1,1011.
Выполняем умножение абсолютных значений сомножителей со сдвигом влево и вправо:
0,1101 0,1101
0,1011 0,1011
1101 1101
1101 1101
1101 1101
10001111 10001111
Так как первое число положительное, а второе отрицательное (0+1=1), то результат будет числом отрицательным, тогда
XY=1.10001111.