Теория автоматов ЛЕКЦИЯ № 6 Теория автоматов 6.1 Методы деления двоичных чисел Деление двоичных чисел сводится к выполнению вычитаний и сдвигов. Пример. Выполнить деление 110110 (54) на 110 (6). 110110|110 |---110 1001 000110 110 000 Результат 54:6=9(10 c.с.)= 1001(2 с.с.) Операция деления чисел, представленных в ЭВМ в форме с фиксированной точкой сводится к выполнению многократных вычитаний и сдвигов. При этом разряды частного определяются, начиная со старшего, последовательным вычитанием делителя сначала из делимого, а затем из образующихся в процессе деления сдвигаемых остатков. Теория автоматов 6.1 Методы деления двоичных чисел Если разность между делимым или очередным остатком и делителем положительна или равна 0, то в соответствующий разряд частного заносится 1, а если отрицательна - заносится 0. Поскольку в ЭВМ операция вычитания в непосредственном виде не выполняется, последовательное вычитание заменяют сложением остатков с дополнительным кодом делителя. При этом новый остаток получается также в соответствующем коде. Операция деления в ЭВМ реализуется двумя методами: с восстановлением и без восстановления остатка. Пример. Деление чисел x=+35 и y=+7 без восстановления остатка. 1. Представление чисел в соответствующих кодах x(пр)=100011; y(пр)=111; y(доп)=001. 2. Сравнение разрядов делителя (111) с таким же количеством старших разрядов делимого (100) показывает, что 111 > 100. Поэтому к делителю слева приписывается 0, т.е. теперь y(пр)=0111, а y(доп)=1001. Если бы делитель был < или = соответствующих разрядов делимого, то деление выполнялось бы сразу. Теория автоматов 6.1 Методы деления двоичных чисел Деление сложение с доп.кодом делителя + 100011|0111 1001 |----------- 101 первый остаток (0001) > 0 0001___||| сдвиг влево 001 || снос 1 из делимого + 0011 || сложение с доп.кодом 1001 || делителя ---|| второй остаток (1100) < 0 1100____|| сдвиг влево 100 | снос 1 из делимого + 1001 | сложение с прямым 0111 | кодом делителя ---| третий остаток (0000) 0000_____| Результат 35:7=5(10 c.c.)=101(2 с.с.) Теория автоматов 6.1 Методы деления двоичных чисел Операция деления чисел, представленных в ЭВМ в форме с плавающей точкой, выполняется путем деления мантиссы делимого на мантиссу делителя; при этом порядок частного определяется разностью порядков делимого и делителя. Полученное частное нормализуется и ему присваивается знак "+", если делимое и делитель имеют одинаковые знаки и "-" при разных знаках. Особенности операции деления чисел с фиксированной и плавающей точкой с использованием сумматоров различных типов 1.деление с неподвижным делимым и сдвигаемым вправо делителем 2 деление с неподвижным делителем и сдвигаемым влево делимым Если после вычитания остаток =>0, то очередная цифра частного = 1, если <0, то частное = 0 и требуется операция восстановления остатка. X - делимое; Y - делитель; Z - частное Теория автоматов 6.1 Методы деления двоичных чисел деление начинается со сдвига делимого влево, косой передачей Рг1Х->РгСм->Рг1Х и Рг2Х->Рг3Х->Рг2Х Теория автоматов 6.1 Методы деления двоичных чисел С восстановлением остатка и неподвижным делителем 1. |X| и |Y| 2. старшие разряды делимого -> частичный остаток 3. частичный остаток удваивается, сдвигом влево на 1 разряд, в освободившийся разряд записываются очередные цифры делимого 4. из сдвинутого остатка вычитается делитель и анализируется знак 5. >0 -> Zi=1 и пока не все поделили переход к 3 <0 -> Zi=0, восстановление остатка (прибавлением делителя) и пока не все поделили переход к 3 6. формирование знака частного Основной недостаток - дополнительный шаг на восстановление остатка. Другой вариант: 1, 2, 3 и 6 без изменений 4. из сдвинутого остатка вычитается делитель, если остаток <0 к полуученому остатку прибавляем делитель 5. >0->Zi=1 <0->Zi=0 пока не все поделили переход к 3 Теория автоматов 6.1 Методы деления двоичных чисел 1. Особенности деления чисел с плавающей точкой. 1. необходима раздельная обработка порядка и мантиссы 2. при сложении и вычитании требуется выравнивание порядков 3. после выполнения операции требуется нормализация при умножении и делении выполняются сложение и вычитание порядков