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

Вам необходимо определиться сколько чисел вам необходимо посчитать и выбрать это количество в графе количество чисел.

Далее Вам необходимо ввести каждое число и выбрать его систему счисления. Если в указанном списке Вы не нашли нужной СС, то выберите пункт другая и введите числом основание вашей системы счисления.

После ввода всех чисел и выбора арифметических операций нажмите кнопку рассчитать.

Поставить LIKEи поделиться ссылкой
  • Калькулятор
  • Инструкция
  • Теория
  • История
  • Сообщить о проблеме

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

Пример решения: 5436 7 — 1101 2
Пример состоит из двух чисел 5436 7 и 1101 2 где в первом 7 и втором 2 — это основания системы счисления.

Введем сначала 5436 7 в поле "число 1" без основания СС (то есть без 7) и укажем его систему в соответствующем поле — выбираем пункт другая и вводим 7. Результат на скришоте:

Теперь также введем число 11011 в двоичной системе счисления:

Далее выбираем в поле "операция" вычитание и указываем что расчет должен быть выполнен в десятичной СС. Если мы хотим чтобы результат расчета был в двоичной СС, то указываем это как на скриншоте:

Теперь нажимаем копку "Рассчитать" и смотрим результат:

Если хотите посмотреть ход решения, то нажмите ссылку "Показать как оно получилось"

Если Вам необходимо рассчитать более двух чисел то выберите нужное количество в пункте "Количество чисел" Максимум 7 чисел.
При расчете сначала выполняются операции деления и умножения затем сложения и вычитания.

Вы можете выполнять операции расчета деления столбиком.

Читайте также:

  1. B. Определение целей коммуникации.
  2. I Выполнение операций в АЛУ для чисел с фиксированной точкой
  3. I. Педагогика как наука, ее выделение в особую отрасль знания и предмет исследования
  4. II. Геометрическое распределение.
  5. II. Показательное распределение
  6. Административно-территориальное устройство субъекта РФ и внутреннее территориальное деление муниципального образования
  7. Акушерское отделение
  8. Алгебраическое представление двоичных чисел
  9. Алгебраическое сложение чисел, представленных в форме с плавающей запятой
  10. Алгебраическое сложение чисел, представленных в форме с фиксированной запятой
  11. Алгоритм представления числа с плавающей запятой.
  12. Алгоритм приведения графа к ярусно-параллельной форме.

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

Деление двоичных чисел во многом аналогично делению десятичных чисел.

В универсальных вычислительных машинах, как правило, реализуется "школьный" алгоритм деления чисел. "Школьный" алгоритм деления заключается в том, что делитель на каждом шаге вычитается из делимого столько раз (начиная со старших разрядов), сколько это возможно для получения наименьшего положительного остатка. Тогда в очередной разряд частного записывается цифра, равная числу делителей, содержащихся в делимом на данном шаге. Иначе говоря, при делении операцию вычитания повторяют до тех пор, пока уменьшаемое не станет меньше вычитаемого. Число этих повторений показывает, сколько раз вычитаемое укладывается в уменьшаемом.

разделим число 35 на 7 :

1) 35 — 7 = 28, 2) 28 — 7 = 21, 3) 21 — 7 = 14, 4) 14 — 7 = 7, 5) 7 — 7 = 0.

Ответ равен 5, т.к. процедура вычитания была повторена 5 раз.

Рассмотрим еще один пример:

разделим 204(10) на 12(10), т.е. 11001100(2):1100(2):

делимое 11001100 | 1100 — делитель

делитель 1100 | 10001

Двоичное, как и десятичное деление, начинается с анализа делимого (11001100) и делителя (1100). Сразу же обнаруживается, что делитель укладывается в 1100, а поэтому записывается 1 в старший разряд поля частного. Умножается делитель на 1 и вычитается из 1100, разность равна 0. Объединяется 0 остатка со значением следующего разряда делимого, равным 1. Поскольку делитель (1100) 0 раз укладывается в 1, записываем 0 в следующий по старшинству разряд поля частного, а число 1 объединяется со следующим разрядом делимого и т.д. до тех пор, пока делимое не оказывается исчерпанным.

Конечно компьютер не может строить догадок относительно того, сколько раз делитель укладывается в том или ином числе, поэтому весь процесс деления сводится к операциям вычитания и сдвига. Продемонстрируем на том же примере, но сначала делитель (1100) представим в дополнительном коде, что позволит ограничиться сложением во всех случаях, когда нужно выполнять сложение или вычитание: 1100пр = 1. 0100д. Частное формируется в некотором регистре С, незаполненные разряды которого будем обозначать через Х.

Начинаем вычитать делитель из делимого. Если остаток получается положительным, то в разряд частного записывается 1, в противном случае — 0.

0. 11001100 делимое 204

+ 1. 01000000 делитель 12

0. 00001100 первый остаток

Первый (старший) бит частного равен 1, т.к. остаток получился положительным: С = 1ХХХХ. Далее сдвигается первый остаток на один разряд влево и из него вычитывается делитель:

1. 01011000 второй остаток

Остаток отрицательный, поэтому в следующий разряд частного записывается 0, С = 10ХХХ. Кроме того необходимо биты делителя вернуть обратно первому остатку, т.е. сложить делитель (в прямом коде) и второй остаток:

0. 00011000 сдвинутый первый остаток.

Далее еще раз сдвигается сдвинутый первый остаток на один разряд влево и вычитается из него делитель:

1. 01110000 третий остаток

Третий остаток отрицательный, значит следующий (третий) разряд частного равен 0, С = 100ХХ. Поэтому возвращаем делитель третьему остатку,

0. 00110000 дважды сдвинутый первый остаток

Сдвигаем дважды сдвинутый первый остаток на один разряд влево и вычитаем делитель:

1. 10100000 четвертый остаток

Четвертый остаток опять отрицательный, поэтому С = 1000Х. Прибавляем делитель к четвертому остатку, результат сдвигаем на один разряд влево, а затем вновь вычитаем делитель:

0. 1100000 первый остаток после четвертого сдвига

0. 0000000 пятый остаток

Остаток положительный, значит С = 10001 = 17(10) — это и есть ответ.

Такой метод деления называется делением с восстановлением остатка.

Деление чисел, представленных в форме с фиксированной запятой можно также осуществить на двоичных сумматорах обратного и дополнительного кода.

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

Например: разделим 35 на 5. 3510 = 0.1000112, 510 = 1012, 5д = 1.011д

(в регистре С, как и в предыдущем примере, формируется частное):

1.111011 С = 0 восстанавливаем остаток до делимого.

0.100011 сдвигаем влево остаток.

0.01111 С = 01, сдвигаем влево остаток.

0.0101 С = 011, сдвигаем остаток.

0.000 С = 0111 = 710

Вычитание делимого продолжают столько раз, сколько разрядов отведено для частного.

Метод деления без восстановления остатка. Как уже отмечалось, основой выполнения деления является операция вычитания с целью получения остатка, знак которого определяет цифру частного. Алгоритм выполнения деления имеет следующий вид:

где a0 — это остаток. Если а0 0, то С = 1, если а0 0, С = 01

+ 1.011000 5 в дополнительном коде (т.е. вычитание 5)

0.010100 a2>0, С = 011

0.000000 a3 = 0, С = 0111 = 710

4.3.2. Деление двоичных чисел, представленных в форме с плавающей запятой.

При операции деления чисел, представленных в форме с плавающей запятой их мантиссы делятся, как числа с фиксированной запятой, а порядки вычитываются. В обоих случаях проверка на переполнение обязательна. Но, т.к. реально вычитываются характеристики чисел, то деление выполняется по следующей формуле:

A1 : A2 = m12: m22= (m1 : m2)2.

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

Т.к. мантиссы операндов нормализованы, то возможны случаи, когда

|mA| |mB|; |mA| |mB|. При первом вычитании mB из mA 1 записываем в целую часть частного:

а0 0.0010 С = 1,XX, далее, будем делить методом деления без восстановления остатка.

Дата добавления: 2014-01-06 ; Просмотров: 4144 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

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

Рассмотрим алгоритм деления на примере деления модулей операндов. Пусть А – делимое, В – делитель. Требуется разделить А на В с точностью до i-го разряда. Тогда

(14)

При любом значении I должно выполняться неравенство

(15)

т.е. остаток от деления A — BYi должен быть меньше делителя, умноженного на 2 — i . Преобразуем (2) к виду

(16)

Обозначив (A – BYi)2 i =Ri, получим

(17)

Цифры частного определяются последовательно, начиная со старшего разряда. Допустим, что в результате выполнения i циклов получены i старших разрядов частного, т.е. приближенное значение частного Yi, удовлетворяющие неравенству (17). В следующем (i+1)м цикле будет получено значение (i+1) – го разряда частного. Исходными данными для этого цикла являются Yi и Ri.

(18)
(19)

т.е. в частном записывается 0 при условии

(20)
(21)
(22)

т.е. цифра частного равна 1, если выполняется условие

(23)
(24)

Так как всегда выполняется одно из условий (20) или (24), то для определения текущей цифры частного достаточно проверить одно из них. Обычно проверяют условие (20). Левая часть этого неравенства выполняется заведомо, так как согласно (17) т.е. очередной остаток перед началом следующего шага деления – всегда положительное число.

Для проверки правой части неравенства сравним разность (2Ri – B) с нулем. Если эта разность окажется отрицательной, то в (i+1)–й разряд частного запишем 0 и для подготовки исходных данных для (i+2)-го цикла определим Ri+1 следующим образом:

Если разность 2Ri-B>0 то запишем в (i+1)-разряд частного 1, а в качестве исходного значения для следующего (i+2)-го цикла используем вычисленную разность Ri+1=2Ri – B.

Исходными данными для 1-го цикла являются Y0=0, R0=(A-BY0)2 0 =A

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

Таблица 14 Действия, выполняемые при делении мантисс

SgA
SgB
СМ³00£0>0£0
Действие на СМ+(ØB)+B+B+(ØB)+(ØB)+B+B+(ØB)
Цифра частногоПК
ОК

Для выполнения операции деления мантисс требуются следующие структурные элементы ОА:

· 2 регистра для хранения делимого и делителя в модифицированном коде;

· сумматор ДСДК (ДСОК), согласованный по формату с регистрами операндов;

· инвертор, для инверсии делителя, так как на сумматоре всегда складываются числа с разными знаками;

· счетчик, задающий число вычисляемых разрядов частного;

· триггер прерывания, который устанавливается в 1, если значение делителя равно 0;

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

Пример деления двоичных чисел с фиксированной запятой на ДСДК со сдвигом текущего остатка с восстановлением остатка

Пусть С=А/В, А=-0,11101, В=0,100010. Дополнительные модифицированные коды делимого и делителя равны соответственно: Пример деления приведен в таблице 15.

Таблица 15 Деление со сдвигом текущего остатка с восстановлением остатка

СМРгССТКомментарии
00,00000— — — — — —СМ:=0, РгА:= , РгВ:= ТП:=0, СТ:=6,
+11,00011 11,00011 +00,10010 11,10101СМ:=СМ+РгА,
SgСМ=SgРгВ? НЕТ. Следовательно, СМ:=СМ+РгВ,
— — — — — 1SgСМ=SgРгА. Следовательно, РгС[5]:=1, СТ:=СТ-1,
11,01010 +00,10010 11,11100— — — — 1 —СТ=0? НЕТ. Следовательно, РгС:=L(1) РгС, СМ:=L(1) CM,
SgСМ=SgРгВ? НЕТ Следовательно, СМ:=СМ+РгВ,
— — — — 11SgСМ=SgРгА. ДА. Следовательно, РгС[5]:=1, СТ:=СТ-1,
11,11000 +00,10010 00,01010— — — 11 —СТ=0? НЕТ. Следовательно, РгС:=L(1) РгС, СМ:=L(1) CM,
SgСМ=SgРгВ? НЕТ. Следовательно, СМ:=СМ+РгВ,
— — — 110SgСМ=SgРгА? НЕТ. Следовательно, РгС[5]:=0, СТ:=СТ-1, Знак сумматора в этом такте инвертировался. Производится восстановление остатка. SgСМ=SgРгВ? ДА. Следовательно,
00,01010 +11,01110 11,11000
11,10000 +00,10010 00,00010— — 110 —СТ=0? НЕТ. Следовательно, РгС:=L(1) РгС, СМ:=L(1) CM,
SgСМ=SgРгВ? НЕТ. Следовательно, СМ:=СМ+РгВ,
00,00010 +11,01110 11,10000— — 1100SgСМ=SgРгА? НЕТ. Следовательно, РгС[5]:=0, СТ:=СТ-1, Знак сумматора в этом такте инвертировался. Производится восстановление остатка. SgСМ=SgРгВ? ДА. Следовательно,
11,00000 +00,10010 11,10010— 1100 —СТ=0? НЕТ. Следовательно, РгС:=L(1) РгС, СМ:=L(1) CM,
SgСМ=SgРгВ? НЕТ. Следовательно, СМ:=СМ+РгВ,
— 11001SgСМ=SgРгА. ДА. Следовательно, РгС[5]:=1, СТ:=СТ-1,
11,00100 +00,10010 11,1011011001 —СТ=0? НЕТ. Следовательно, РгС:=L(1) РгС, СМ:=L(1) CM,
SgСМ=SgРгВ? НЕТ. Следовательно, СМ:=СМ+РгВ,
SgСМ=SgРгА. ДА. Следовательно, РгС[5]:=1, СТ:=СТ-1,
СТ=0? ДА. Выход из цикла. Проверяем переполнение разрядной сетки: РгС[0]=1? ДА. Следовательно, переполнение разрядной сетки частного имеет место. Выполняем нормализацию результата. С этой целью мантиссу сдвигаем логическим сдвигом на один разряд вправо, и к порядку прибавляем 1. Младший разряд частного сваливается с разрядной сетки и теряется. РгС:=R(1)РгС; СМП:=СМП+1; (Операции над порядком в этой таблице не отображены).

Далее проверяется значение знакового разряда частного, который определяется с помощью комбинационной схемы как сумма по модулю 2 знаков делимого и делителя. Если результат положительный, то результатом деления мантисс является содержимое регистра С и значение порядка, которое находится в сумматоре порядка. Если же результат деления отрицательный, то его необходимо инвертировать перед отправлением результата в память. При использовании обратного кода достаточно проинвертировать результат с помощью имеющегося сумматора. В случае деления на ДСДК для получения инверсного кода частного придется использовать сумматор для подсуммирования 1 в младший разряд инверсного кода. При этом необходимо обратить внимание на согласование форматов регистра С и сумматора.

|следующая лекция ==>
Умножение двоичных чисел с фиксированной запятой на ДСДК, схема 3|Деление двоичных чисел с фиксированной запятой без восстановления остатка.

Дата добавления: 2019-04-03 ; просмотров: 288 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ