Представление чисел в ЭВМ

Автор работы: Пользователь скрыл имя, 24 Марта 2011 в 17:14, курсовая работа

Описание работы

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

Содержание работы

Задание 1. Перевод чисел из одной позиционной системы в другую……………………….…3

1.Перевод чисел из десятичной системы счисления в двоичную…………………....3
2.Изображение чисел в форме с фиксированной запятой (ФЗ).…….………………..5
3.Изображение чисел в форме с плавающей запятой (ПЗ)…………………..……….6
Задание 2. Сложение двоичных чисел…………………………………………………....….…..7

2.1 Сложение чисел в форме с ФЗ в обратном коде (ОК)………………………………7

2.2 Сложение чисел в форме с ФЗ в дополнительном коде (ДК)………………………8

2.3 Сложение чисел в форме с ФЗ в модифицированном коде………………...………8

2.4 Сложение чисел в форме с ПЗ………………………………………………….….…9

Задание 3. Умножение двоичных чисел………………………………………………………..11

3.1 Умножение чисел с ФЗ в ПК, используя первый способ умножения…………....11

3.2 Умножение чисел с ФЗ в ДК, используя второй способ умножения………….....13

3.3 Умножение чисел с ФЗ в ДК, используя третий способ умножения……...……...15

3.4 Умножение чисел с ПЗ, используя четвертый способ умножения……..……...…16

Задание 4. Деление двоичных чисел………………………………………………..…………..19

4.1 Деление чисел с ФЗ в ПК первым способом, применяя алгоритм с восстановлением остатков (ВО) и ОК при вычитании………………………………………………………………………………..……….19

4.2 Деление чисел с ФЗ в ПК вторым способом, применяя алгоритм без ВО и ДК

при вычитании………………………………………………………….…………….………….21

4.3 Деление чисел с ФЗ в ДК вторым способом, применяя алгоритм с автоматической коррекцией…………………………………………………………………………………..……23

4.4 Деление чисел с ПЗ первым способом…………………………………...…………24

Задание 5. Сложение двоично-десятичных чисел……………………………………………..27

5.1 Сложение двоично-десятичных чисел в коде 8-4-2-1………………………..……27

5.2 Сложение двоично-десятичных чисел в коде с избытком три………………..….28

5.3 Сложение двоично-десятичных чисел в коде 2-4-2-1………………………..……30

5.4 Сложение двоично-десятичных чисел в коде 3а+2………………………..………31

Задание 6. Умножение двоично-десятичных чисел…………………………………......…….32

6.1 Умножение старорусским методом удвоения – деления пополам……...………..32

6.2 Умножение методом десятично-двоичного разложения множителя………….....34

Список литературы………………………………………………………………………...…….

Файлы: 1 файл

курсач 2009 год.doc

— 447.50 Кб (Скачать файл)
 

Порядок произведения:

00,0110

00,0101

00,1011 = 1110

Выполняем нормализацию : 

0,101000 111110 (М=212) = 0,010100011111 (М=212) 

зн   мантисса       порядок

0     10100011111   1011

 

Ответ:                        

(C*D)пк =101000111112 = 131110

Проверка:

2310*5710 = 131110 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

IV. Деление двоичных чисел 

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

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

  Так как операция деления обратна  умножению и начинается всегда со старших разрядов, то существуют два способа деления – обращенный III и IV способы умножения. Причем нередко для реализации умножения и деления целесообразно использовать одно и то же оборудование: регистр множимого - как регистр делителя, регистр множителя – как регистр частного, а регистр частных сумм – как регистр делимого, в который заносят остатки от деления. 

    
 
 
 
 

  Алгоритм  деления с восстановлением  остатков:

  1. Определить знак частного сложением по модулю 2 знаковых разрядов делимого и делителя. Далее использовать модули операндов.
  2. Вычесть из делимого делитель, путем сложения в ОК или ДК.
  3. Проанализировать знак остатка после первого вычитания:

    а) если остаток положительный, то произошло  ПРС, операцию следует прекратить до смены масштабов операндов;

    б) если остаток отрицательный, то в частное занести «0» (этот разряд по окончании деления станет знаковым разрядом частного) и восстановить остаток, прибавив к нему делитель.

  1. Выполнить сдвиги: частного на один разряд влево и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
  2. В цикле формирования цифр частного вычитать из остатка делитель, прибавляя его в ОК или ДК.
  3. Проанализировать знак полученного остатка:

       а) если > 0, то в частное заносится «1»;

       б) если <0, то в частное заносится «0».

  1. Восстановить отрицательный остаток, сложив его с делителем.
  2. Выполнить сдвиги, как указано в п.4.
  3. Завершить цикл формированием (n+1)-го остатка для округления частного.
  4. Выполнить округление результата и присвоить частному знак из п.1.
 

C =   2310 = 101112

D = -5710 = -1110012

Спк = 0,010111- делимое    М = 26

Dпк = 1,111001

Dок = 1,000110 - делитель 
 
 
 
 

Частное
Делимое (Остатки)

Примечания
    0,000000 
 
 
 
 
    
  0,010111

  1,000110

  1,011101

     0,111001

   10,010110

               1

     0,010111

Вычитание 

Остаток, < 0

Восст. Остатка 
 

Сдвиги

 
 
    0,000000 
 
 
  0,101110

  1,000110

     1,110100

    0,111001

   10,101101

                  1

     0,101110

Вычитание 

Остаток, < 0

Восст. Остатка 
 

Сдвиги

 
 
 
 
    0,000001
     1,011100 

    1,000110

   10,100010

                  1

    0,100011

     1,000110

 
Вычитание 
 

Остаток > 0

Сдвиги

 
 
 
 
    0,000011 

      

    0,000110 
 
 
 

      

    0,001100 
 
 
 
 

      
 
 

    0,011001

      
 
 
 

    0,011001(1)

     1,000110

  1,000110

   10,001100

                  1

     0,001101

  0,011010

  0,011010

     1,000110

     1,100000

     0,111001

   10,011001

                  1

     0,011010

     0,110100

    1,000110 

     1,111010

     0,111001

   10,110011

                  1

     0,110100

     1,101000

     1,101000 

     1,000110

   10,101111

                  1

     0,110000

     1,100000

     1,100000    

     1,000110

   10,100110

                 1

     0,100111

 
Вычитание 
 

Остаток > 0 

Сдвиги

Вычитание

Остаток <0

Восст. Остатка 
 

Сдвиги

Вычитание 

Остаток < 0

Восст. Остатка 
 
 

Сдвиги

Вычитание 
 
 

Остаток > 0

Сдвиги

Вычитание 
 
 

Остаток > 0

 

    Округление:

    0,011001

                 1

    0,011010 

    (C/D)пк = 0,011010 

    C/D = 0,0110102 = 0,4062510

    Точный результат: C/D = -23/-57 = - 0,40351

    Абсолютная  погрешность: - 0,40625 + 0,40351 = - 0,00274

    Относительная погрешность: (-0,00274)/(-0,40351) = 0,0068 , т.е. 0,7% 
     
     

     
     
     
     
     
     

Алгоритм  деления без восстановления остатков:

  1. Определить знак частного путем сложения по модулю два знаковых разрядов делителя и делимого. Далее использовать модули операндов.
  2. Вычесть из делимого делитель путем сложения в ДК или ОК.
  3. Проанализировать знак остатка после первого вычитания:

а) если положителен, то произошло ПРС, операцию следует прекратить для смены  масштаба операндов;

б) если остаток отрицателен, то в частное  занести «0» и продолжить операцию деления.

  1. Выполнить сдвиги частного на один разряд влево и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
  2. Если до сдвига остаток был положителен, то вычесть из остатка делитель, если был отрицателен – прибавить к остатку делитель.
  3. Если вновь полученный остаток положителен, то в очередной разряд частного занести «1», в противном случае -  «0».
  4. Выполнить пп.4-6 алгоритма (n+1) раз, причем последний сдвиг частного не выполнять, т.к. (n+1)-ый разряд формируется для округления.
  5. Выполнить округление результата и присвоить частному знак из п.1.
 
 

C = -2310 = -10111 2 - делимое

D = -5710 = -111001 2 - делитель

Спк = 1,010111 

Dпк = 1,111001

Сдк = 1,101001  М = 26

Dдк = 1,000111

1 1 = 0 
 
 
 
 
 

Частное (Влево)

Делитель (Вправо)
Делимое (остатки) Примечания
0,000000 
 

0,000000 
 

0,000001 
 

0,000011 
 

0,000110 
 

0,001100 
 

0,011001 
 

0,011001 (1)

0,111001 000000 
 

0,011100 100000 
 

0,001110 010000 
 

0,000111 001000 
 

0,000011 100100 
 

0,000001 110010 
 

0,000000 111001 
 

0,000000 011100

  0,010111 000000

  1,000111 000000

 
Вычитание

Остаток < 0

Сдвиги

Сложение

Остаток < 0

Сдвиги

Сложение

Остаток > 0

Сдвиги

Вычитание

Остаток > 0

Сдвиги

Вычитание

Остаток < 0

Сдвиги

Сложение

Остаток < 0

Сдвиги

Сложение

Остаток > 0

Сдвиги

Вычитание

Остаток < 0

  1,011110 000000 

  0,011100 100000

  1,111010 100000 

  0,001110 010000

10,001000 110000

  0,001000 110000

  1,111000 111000

10,000001 101000

 

  0,000001 101000

  1,111100 011100

  1,111110 000100 

  0,000001 110010

  1,111111 110110

  0,000000 111001

10,000000 101111

  0,000000 101111

  1,111111 100100

10,000000 010011

  0,000000 010011

 
 

    Округление:

    0,011001

                 1

    0,011010 

    (C/D)пк = 0,011010 

    C/D = 0,011010(2) = 0,4062510

    Точный результат: C/D = -23/-57 = - 0,40351

    Абсолютная  погрешность: - 0,40625 + 0,40351 = - 0,00274

    Относительная погрешность: ( (-0,00274)/(-0,40351) )= 0,0068 , т.е. 0,7% 
     
     
     
     
     
     
     
     
     
     
     
     
     

 
 
 
 
 
 

   Алгоритм  деления в дополнительном коде (с автоматической коррекцией).

   Операнды  участвуют в операции деления  со знаковыми разрядами. Знак частного определяется в процессе деления.

  1. Если знаки делимого и делителя совпадают, то в частное заносится «0», в противном случае – «1». Этот разряд знаковый.
  2. Если знаки операндов совпадают, то делитель вычитается из делимого, в противном случае делитель прибавляется к делимому.
  3. Если знак первого остатка совпадает со знаком делимого, то произошло ПРС. Операцию деления прекратить. В противном случае деление продолжить.
  4. Выполнить сдвиги частного и остатка на один разряд влево (I способ) или делителя на один разряд вправо (II способ).
  5. Все последующие остатки формируются по правилу: если знаки делителя и остатка до сдвига совпадали, то делитель вычесть из остатка, в противном случае – делитель прибавить к остатку.
  6. Если знаки нового остатка и делителя совпадают, то в очередной разряд частного    занести «1», в противном случае – «0».
  7. Выполнить пп.4-6 (n+1) раз, причем последний сдвиг частного не выполнять.
  8. Выполнить округление результата.
 

C = -2310 = -101112      - делитель

D =  5710 = 1110012 - делимое

Спк = 1,010111

Dпк = 0,111001

Сдк = 1,101001  М = 26

Dдк = 0,000111

1 0 = 1 

Частное (Влево)

Делитель (Вправо)
Делимое (остатки) Комментарий
0,000001 1,101001 000000   0,111001 000000

  1,101001 000000

Срав. Знаков

Сложение

ПРС!

10,100010 000000
Увеличиваем порядок делимого до 7
0,000001 1,101001 000000   0,011100 100000

  1,101001 000000

10,000101 100000

Срав. Знаков

Сложение

ПРС!

Увеличиваем порядок делимого до 8
0,000001 
 

0,000010 
 

0,000101 
 

0,001011 
 

0,010110 
 

0,101100 
 

1,011000 
 

1,011000 (0)

1,101001 000000 
 

1,110100 100000 
 

1,111010 010000 
 

1,111101 001000 
 

1,111110 100100 
 

1,111111 010010 
 

1,111111 101001 
 

1,111111 110100

  0,001110 010000

  1,101001 000000

Срав. Знаков

Сложение 

Сдвиги

Вычитание 

Сдвиги

Сложение 

Сдвиги

Вычитание 

Сдвиги

Вычитание 

Сдвиги

Сложение 

Сдвиги

Сложение 

Сдвиги

Сложение

  1,110111 010000 

  0,001011 100000

10,000010 110000 

  1,111010 010000

  1,111101 000000 

  0,000010 111000

  1,111111 111000 

  0,000001 011100

10,000001 010100 

  1,111111 010010

10,000000 100110 

  1,111111 101001

10,000000 001111 

  1,111111 110100

10,000000 000011
 
 

    (D/C)дк = 1,011000

(D/C)пк = 1,101000  

   Порядок частного:

         0,0111 

         1,1011

       10,0010=0,0010 = 210 

D/C = 10,10002 = 2,5    M = 22

    Точный результат: 57/(-23) = -2,4783

    Абсолютная  погрешность: |- 2,5+ 2,4783| = 0,0217

    Относительная погрешность: (0,0217)/(2,4783) = 0,0088 , т.е. 0,9%

         
 

     
     
     
     
     
     

  Деление чисел в форме  с плавающей запятой

  Когда операнды заданы в форме с ПЗ, то их частное определяется следующим образом:

  

   Т.е. мантисса частного mС есть частное мантисс делимого и делителя, а порядок рС – сумма порядков операндов.

   Это позволяет сформулировать алгоритм деления чисел в форме с ПЗ:

  1. Определить знак частного путем сложения по модулю два знаковых разрядов операндов.
  2. Разделить модуль мантиссы делимого на модуль мантиссы делителя по правилам деления дробных чисел с ФЗ.
  3. Определить порядок частного вычитанием порядка делителя из порядка делимого,  используя ОК или ДК.
  4. Нормализовать мантиссу результата и присвоить знак из п.1.

   В отличие от деления чисел с  ФЗ при выполнении п.2 алгоритма, получение  положительного остатка при первом вычитании не означает ПРС. При обработке  чисел с ПЗ такая ситуация требует денормализации мантиссы делимого сдвигом её на 1 разряд вправо с одновременным увеличением порядка делимого на «1».

   Однако  ситуация ПРС при делении чисел  с ПЗ возможна при вычитании порядков операндов, если они были разных знаков. 

C = 2310 = 101112 - делитель

D =  5710 = 1110012 - делимое

Операнды  в разрядной сетке  условной машины

C = 2310 = 1011102

D = 5710 = 1110012 – делимое

Cпк= 0,0101112          М = 26 

C 0 101110 0 0101
D 0 111001 0 0110

Информация о работе Представление чисел в ЭВМ