Министерствообразования Республики Таджикистан
ТаджикскийТехнический Университет им. ак. М. С. Осими
кафедраАСОИиУ
Курсоваяработа
на тему:«Деление двоичных чисел в прямом, обратном
идополнительном кодах»
Душанбе 2009
Оглавление
Аннотация
Введение
Позиционные системы счисления
Двоичная арифметика
Правила перевода
Перевод целых чисел
Перевод дробных чисел
Прямой, обратный и дополнительныйкоды
Сложение и вычитание в прямом,обратном и дополнительном кодах
Деление в прямом, обратном идополнительном кодах
Заключение
Использованная литература
/>Аннотация
Развитие науки и техники,исследование физических явлений, создание новых машин, материалов, процессов,систем управления невозможно без детального изучения закономерностей иустановления численных характеристик и соотношений, определяющих их протеканиеи функционирование. Решение связанных с этим математических задач, как правило, возможно только численными методами, требующими сложных и трудоёмкихвычислений.
В середине ХХ векаразвитие атомной физики, ракетной и космической техники потребовало решениявычислительных задач такого большого объёма, что с ними нельзя было справитьсяпри помощи в то время средств вычислительной техники – клавишных илиперфорационных машин.
Это потребность привела ксозданию на рубеже 40 — 50-х годов электронных автоматических цифровых вычислительныхмашин (ЦВМ), воплотивших в себе научные и технические достижения того времени,в частности в области электронной автоматики.
Особое значениеэлектронных цифровых вычислительных машин состоит в том, что впервые с ихпоявлением человек получил орудие для автоматизации процессов обработкиинформации.
В настоящее время всевычислительные машины являются цифровыми, то есть в принципе их работы лежатчисла. В цифровой технике самое широкое распространение получил двоичный код, аименно код в основе которого лежит двоичная система счисления (т.е цифры «0» и«1»). Двоичная система счисления применяется при обработке данных во всехсовременных вычислительных системах. Принцип работы компьютера (ЭВМ) такжеоснован на двоичной системе. В нём в качестве двоичных нуля и единицы наэлектрическом уровне организованно соотношение «есть сигнал» — «1», «нетсигнала» — «0».
Но для выполнения какихлибо вычислений необходимо сначала организовать принцип вычислений в двоичнойсистеме. Для этого и была разработана специальная двоичная «арифметика»,показывающая закономерности при выполнении простейших арифметических операцийнад двоичными числами, а именно сложения, вычитания, умножения и деления.
Введение
В данной курсовой работебудут рассмотрены все аспекты связанные с системами счисления, двоичнойарифметикой, и арифметическими операциями над двоичными числами. Мы рассмотримразличные системы счисления, их различия, преимущества и недостатки а такжеметоды и способы перехода между различными системами счисления.
В частности затронемправила двоичной арифметики, являющейся основным закономерным элементов всейцифровой (двоичной) технологии. Подробно разберём каждый элемент двоичнойарифметики, а именно двоичное сложение, двоичное вычитание и двоичноеумножение. Операция двоичного деления сводится как правило к последовательностисуммирования и вычитания, а также в некоторых методах и сдвига двоичного кода.
По делению в двоичномкоде мы пройдёмся подробней. Будут рассмотрены методы реализования делениядвоичных чисел в прямом, обратном и дополнительном кодах. В частности будутрассмотрены два основных метода организации деления двоичных чисел, а именнометод деления с восстановлением остатка и метод деления без восстановленияостатка (этот метод аналогичен простому делению «в столбик»). Их преимущества инедостатки, принципы построения алгоритма.
Позиционные системысчисления
Под системой счисленияпонимается способ представления любого числа посредством некоторого алфавитасимволов, называемых цифрами. Существуют различные системы счисления. От ихособенностей зависят наглядность представления числа при помощи цифр исложность выполнения арифметических операций.
Римская непозиционнаясистема счисления является примером системы с очень сложным способом записичисел и громоздкими правилами выполнения арифметических операций.
Огромными преимуществамив наглядности представления чисел и в простоте выполнения арифметическихопераций обладают позиционные системы счисления. Этим объясняется то выдающеесязначение для развития вычислений, которое имело создание арабами позиционнойдесятичной системы счисления, используемой нами в повседневной жизни.
Система счисленияназывается позиционной, если одна и та же цифра имеет различное значение,определяющееся позицией цифры в последовательности цифр, изображающей число.Это значение меняется в однозначной зависимости от позиции, занимаемой цифрой,по некоторому закону. Помимо десятичной системы существуют другие позиционныесистемы. Некоторые из них нашли применение в вычислительной технике.
Количество s различныхцифр, употребляемых в позиционной системе, называется ее основанием. Эти цифрыобозначают s целых чисел, обычно 0, 1,…, (s — 1). В десятичной системеиспользуются десять цифр: О, 1, 2, 3, 4, 5, 6, 7, 8, 9 и поэтому эта системаимеет основанием число десять.
В общем случаепозиционной системы с основанием s любое число х может быть представлено в видеполинома от основания s:
/>
где в качествекоэффициентов εi могут стоять любые из s цифр, используемых в системесчисления.
Принято пользоватьсяэквивалентной, но более простой формой представления числа в видепоследовательности соответствующих цифр:
/>
В этой последовательностизапятая отделяет целую часть числа от дробной (коэффициенты при положительныхстепенях s, включая нуль, от коэффициентов при отрицательных степенях). Запятаяопускается, если нет отрицательных степеней. Позиции цифр, отсчитываемые отзапятой, называют разрядами. В позиционной системе счисления значение каждогоразряда больше значения соседнего справа разряда в число раз, равное основаниюs системы.
С учетом сказанного в десятичнойсистеме счисления запись 6097, 108 означает число:
/>
В электронныхвычислительных машинах применяют позиционные системы счисления с недесятичнымоснованием: двоичную, шестнадцатеричную, восьмеричную и некоторые другие. Вдальнейшем для обозначения используемой системы счисления будем заключать числов скобки и в индексе указывать основание системы счисления.
Наибольшеераспространение в ЦВМ имеет двоичная система счисления. В этой системеиспользуются только две («двоичные») цифры: (нуль) и 1 (единица).
В двоичной системе любоечисло может быть, представлено соответствующей последовательностью двоичныхцифр
/>
где αi могут быть либо 0, либо 1. Этазапись соответствует сумме степеней числа 2, взятых с указанными в нейкоэффициентами:
/>
Например, двоичное число
/>
как следует изприведенного разложения его по степеням числа 2, соответствует десятичномучислу: />
Изображения некоторыхчисел в десятичной, двоичной, восьмеричной и шестнадцатеричной системахсчисления показаны в таблице:
Десятичное
изображение
Двоичное
изображение Восьмеричное изображение
Шестнадцатеричное
изображение
Десятичное
изображение
Двоичное
изображение Восьмеричное изображение
Шестнадцатеричное
изображение 11 1011 13 B 1 1 1 1 12 1100 14 C 2 10 2 2 13 1101 15 D 3 11 3 3 14 1110 16 E 4 100 4 4 15 1111 17 F 5 101 5 5 16 10000 20 10 6 110 6 6 17 10001 21 11 7 111 7 7 18 10010 22 12 8 1000 10 8 1/4 0,01 0,2 0,4 9 1001 11 9 7/8 0,111 0,7 0,E 10 1010 12 A 4,5 100,1 4,4 4,8
Как видно из таблицы, атакже из только что рассмотренного примера, двоичное изображение числа требуетбольшего (для многоразрядного числа примерно в 3,3 раза) количества разрядов,чем его десятичное представление. Тем не менее применение двоичной системыпозволяет уменьшить общее количество аппаратуры и создает большие удобства дляпроектирования цифровых вычислительных машин, так как для представления вмашине разряда двоичного числа может быть использован любой простой элемент,имеющий всего два устойчивых состояния. Такими элементами, например, являютсяреле, триггерные схемы и т.п. Для представления десятичного разрядапотребовалось бы четыре таких элемента.
Помимо двоичной системысчисления в ЦВМ используются также другие системы с недесятичным основанием — восьмеричная и шестнадцатеричная, имеющие основанием соответственно числа 8 и16. В восьмеричной системе употребляются восемь цифр: 0, 1, 2, 3, 4, 5, 6, 7.
Любое число ввосьмеричной системе представляется последовательностью цифр:
/>
в которой βi могут принимать значения от 0 до 7.Этой записи соответствует разложение числа x по степеням числа восемь с приведенными ниже коэффициентами:
/>
Например, восьмеричноечисло:
/>
В шестнадцатеричнойсистеме для изображения чисел употребляется 16 цифр от 0 до 15. При этом, чтобыодну цифру не изображать двумя знаками, приходится вводить специальныеобозначения для цифр, больших девяти. Обозначим первые десять цифр этой системыцифрами от 0 до 9, а старшие пять цифр — латинскими буквами: десять — А,одиннадцать — В, двенадцать — С, тринадцать — D, четырнадцать — Е, пятнадцать — F. Записи произвольногочисла в шестнадцатеричной системе в виде последовательности цифр:
/>
где γi можетпринимать любые из 16 значений от 0 до F (пятнадцать), соответствует разложениечисла х по степеням числа 16 с указанными ниже коэффициентами:
/>
Например,шестнадцатеричное число:
/>
Основание любой системысчисления, записанное в этой же системе, имеет вид 10 (число два в двоичнойсистеме есть 10, число восемь в восьмеричной системе есть 10 и т.д.). Общиеметоды перевода чисел из одной системы в другую будут изложены в следующемпараграфе. Здесь мы ограничимся только рассмотрением правил преобразованиявосьмеричных и шестнадцатеричных чисел в двоичные и наоборот. Эти правилаисключительно просты, поскольку основания восьмеричной и шестнадцатеричнойсистем есть целые степени числа два: />
Для переводавосьмеричного числа в двоичную форму достаточно заменить каждую цифрувосьмеричного числа соответствующим трехразрядным двоичным числом. Таким жеобразом для перехода от шестнадцатеричной системы к двоичной каждая цифрашестнадцатеричного числа заменяется соответствующим четырехразрядным двоичнымчислом. При этом отбрасывают ненужные нули. Например, восьмеричное число 305,4в двоичной форме записи имеет вид:
/>
а шестнадцатеричное число7В2, Е в двоичной системе запишется следующим образом:
/>
Для перехода от двоичнойк восьмеричной (или шестнадцатеричной) системе поступают следующим образом:двигаясь от запятой влево и вправо, разбивают двоичное число на группы по три(четыре) разряда, дополняя при необходимости нулями крайние левую и правуюгруппы. Затем каждую группу из трех (четырех) разрядов заменяют соответствующейвосьмеричной (шестнадцатеричной) цифрой.
Приведем примеры:
а) Перевод двоичногочисла 1101111001, 1101 в восьмеричное:
/>
б) Перевод двоичногочисла 11111111011,100111 в шестнадцатеричное:
/>
Двоичные числа, наборыцифр которых разбиты на группы по три (четыре) разряда, а крайние группы принеобходимости дополнены нулями, можно считать восьмеричными(шестнадцатеричными) числами, в которых цифра каждого разряда записана вдвоичной системе
в виде трех (четырех)разрядного двоичного числа. Такие формы записи чисел носят названиедвоично-восьмеричной и двоично-шестнадцатеричной системы. Они называются такжедвоично-кодированными системами.
В вычислительных системахтакже применяются специальные формы кодирования десятичных чисел. Этот вопросбудет рассмотрен ниже.
В настоящее время длябольшинства вычислительных машин основной системой счисления является двоичная.Двоичная система и двоичный алфавит используются во многих машинах дляпредставления и хранения чисел и команд и при выполнении арифметических илогических операций.
Восьмеричная ишестнадцатеричная системы используются при составлении программ для болеекороткой и удобной записи двоичных кодов — команд, так как эти системы нетребуют специальных операций для перевода в двоичную систему.
Числовые данные,необходимые для решения задачи, вводятся в машину обычно в десятичной системе ввиде специальных кодов. Перевод десятичных чисел в двоичные выполняетсямашиной.
Результаты расчетавыводятся из машины в десятичной системе. Перевод данных из двоичной системы вдесятичную производится машиной.
При выводе иззапоминающего устройства команд они печатаются в шестнадцатеричной (восьмеричной)системе. Числа также могут выводиться в шестнадцатеричной (восьмеричной)системе.
Двоичная арифметика
Правила выполненияарифметических действий над двоичными числами задаются таблицами двоичныхсложения, вычитания и умножения:Таблица двоичного сложения
Таблица двоичного
вычитания Таблица двоичного умножения
0+0=0
0+1=1
1+0=1
1+1=0 +
+единица переносится
в старший разряд
0-0=0
1-0=1
1-1=0
0-1=1 +
+единица занимается
из старшего разряда
0*0=0
0*1=0
1*0=0
1*1=1
Правила арифметики вовсех позиционных системах аналогичны. Поэтому сложение двух чисел в двоичнойсистеме можно выполнять столбиком, начиная с младшего разряда, подобно тому,как мы это делаем в десятичной системе. В каждом разряде в соответствии справилами, указанными таблицей двоичного сложения, производится сложение двухцифр слагаемых или двух этих цифр и единицы, если имеется перенос из соседнегомладшего разряда. В результате получается цифра соответствующего разряда суммыи, возможно, также единица переноса в старший разряд. Приведем пример насложение двух двоичных чисел.
Переносы:
/> />
Справа показано сложениетех же чисел, представленных в десятичной системе.
Вычитание чисел вдвоичной системе выполняется подобно вычитанию в десятичной системе. Привычитании в данном разряде при необходимости занимается единица из следующегостаршего разряда. Эта занимаемая единица равна двум единицам данного разряда.Занимание производится каждый раз, когда цифра в разряде вычитаемого большецифры в том же разряде уменьшаемого. Поясним сказанное примером:
/>
Умножение двоичныхмногоразрядных чисел производится путем образования частичных произведений ипоследующего их суммирования. В соответствии с таблицей двоичного умножениякаждое частичное произведение равно нулю, если в соответствующем разрядемножителя стоит нуль, или равно множимому, сдвинутому на соответствующее числоразрядов влево, если в разряде множителя стоит единица. Таким образом, операцияумножения многоразрядных двоичных чисел сводится к операциям сдвига и сложения.Положение запятой определяется так же, как при умножении десятичных чисел.Сказанное поясняется примером:
/>/>10111
10101
____________
10111
00000
+ 10111
00000
10111
________________________
111100011
Деление чисел в двоичнойсистеме производится аналогично делению десятичных чисел.
Достаточно рассмотретьделение двух целых двоичных чисел, так как делимое и делитель всегда могут бытьприведены к такому виду путем перенесения запятой в делимом и делителе наодинаковое число разрядов и дописывания нулей в недостающие справа разряды.
Особенности выполненияделения двоичных чисел поясняются примером:
1100,011: 10,01 = ?
/> 1100011 10010
10010 101,1
____________________
11011
10010
______________
10010
10010
______________
00000
Благодаря простоте правилдвоичного сложения, вычитания и умножения применение в ЦВМ двоичной системысчисления позволяет упростить схемы арифметических устройств.
Правила перевода
Перейдем к рассмотрениюправил перевода чисел из, одной системы счисления в другую.
Необходимость в такихпреобразованиях возникает из-за того, что ЦВМ работает в двоичной системесчислений, программа записывается в шестнадцатеричной или восьмеричной системе,а подготовка исходных данных для расчетов и выдача результатов расчета измашины производятся в десятичной системе.
Обычно преобразованиячисел из одной системы счисления в другую выполняются автоматическиустройствами машины.
Однако припрограммировании задач, а также при вмешательстве оператора в процесс решениязадачи на ЦВМ может возникать необходимость ручного перевода отдельного числаили небольшой группы чисел из одной системы в другую.
Правила перевода зависятот того, какая арифметика используется при выполнении арифметических операций,связанных с преобразованием чисел, — арифметика той системы счисления, вкоторой представлено исходное число, или арифметика системы счисления, вкоторую число переводится.
Пусть необходимоперевести число y,представленное в системе счисления с основанием s:
/>
в h-систему, выполняя нужные для этогоарифметические действия в новой h-системе. Для этого достаточно числопредставить в виде соответствующей суммы степеней s:
/>
в которой основание s ивсе коэффициенты εi выражены в новой h-системе, и выполнить в h-системевсе необходимые для вычисления этой суммы действия.
Пример 1. Перевести в десятичную системушестнадцатеричное число у = (2Е5, А)16. Для этого представляют ув виде:
/>
Пример 2. Перевести в десятичную систему двоичноечисло z = (11011,101)2 :
/>
Рассмотрим теперь переводчисла из s-системы в h-систему посредством арифметических операций исходнойs-системы. В этом случае правила для перевода целых чисел и дробей различны.
Перевод целых чисел
Пусть целое число у,представленное в s-системе, требуется перевести в h-систему. Искомая записьчисла у в h-системе имеет вид:
/>
Разделив у на h,получим:
/>
Отсюда
/>
где у1 естьчастное от деления числа у на основание системы h, а младшая цифра искомогопредставления числа у в h-системе есть остаток от этого деления.
Если теперь разделить у1на h, то получим:
/>
В силу
/>
остаток от второгоделения есть цифра σ2 следующего разряда в представлении числа у вh-системе и т.д. Таким образом, получаем правило: для перевода целого числа изs-системы счисления в h-систему нужно последовательно делить это число иполучаемые частные на Основание h новой системы, представленное в старойs-системе, до тех пор, пока частное не станет меньше h. Старшей цифрой в записичисла в h-системе служит последнее частное, а следующие за ней цифры даютостатки, выписываемые s последовательности, обратной их получению.
Перевод дробных чисел
Перевод в h-системуправильной дроби z представленной в системе счисления с основанием s,означает запись этой дроби в виде:
/>
Умножая z на hполучаем:
/>
где σ-1 и z1 соответственно целая и дробныечасти этого произведения. При этом целая часть σ-1 есть старшая цифра впредставлении числа z в h-системе.
Если теперь умножить на hправильную дробь z1, то целаячасть произведения дает следующую цифру σ-2 в представлении числа в hсистеме.
Следовательно, можносформулировать правило: для перевода правильной дроби из s-системы в системусчисления с основанием h нужно умножить исходную дробь и дробные частиполучающихся произведений на основание h, представленное в старой s-системе.Целые части получающихся произведений дают последовательность цифр впредставлении дроби в h-системе.
Обычно перевод дробей изодной системы в другую производят приближенно.
При переводе неправильнойдроби переводят отдельно целую и дробную части, руководствуясь соответствующимиправилами.
Прямой, обратный идополнительный коды
При проектированиивычислительных устройств необходимо решить вопрос о способе представления вмашине положительных и отрицательных чисел и о признаке переполнения разряднойсетки. Указанный вопрос решается применением специальных колов дляпредставления чисел. При помощи этих кодов операция вычитания (илиалгебраического сложения) сводится к арифметическому сложению. В результатеупрощаются арифметические устройства машин.
Для представлениядвоичных чисел в машине применяют прямой, обратный и дополнительный коды. Вовсех этих кодах предусматривается дополнительный разряд для представления знакачисла, причем знак «+» кодируется цифрой 0, а знак « — » — цифрой 1.
Положительные числа припрямом, обратном и дополнительном кодах имеют один и тот же вид, аотрицательные — различный.
Прямой код (G)пр двоичного числа G = ± 0, γ1, γ2, …, γn (γi = 1 или 0) определяется условиями:
/>
G при G ≥ 0
(G)пр =
(1 – G) при G ≤ 0
Положительное двоичноечисло с запятой, фиксированной перед старшим разрядом,
G+ = + 0, γ1, γ2, …, γn
в прямом кодепредставляется в виде:
(G+) пр = 0, γ1, γ2, …, γn (1)
Аналогично отрицательноедвоичное число:
G- = — 0, γ1, γ2, …, γn (1a)
в прямом кодепредставляется в виде:
(G-) пр = 1, γ1, γ2, …, γn (2)
Способы представлениячисел (1) и (2) называются прямым кодом соответственно положительных иотрицательных двоичных чисел.
Сложение и вычитание впрямом, обратном и дополнительном кодах
Сложение в прямом кодечисел, имеющих одинаковые знаки, выполняется достаточно просто. Мантиссыскладываются и сумме присваивается код знака слагаемых. Значительно болеесложной является операция алгебраического сложения в прямом коде чисел с раз-
личными знаками. В этомслучае приходится определять большое по модулю число, производить вычитаниемантисс и присваивать разности знак большего (по модулю) числа. Таким образом,если положительные и отрицательные числа представлены в прямом коде, операциинад кодами знаков и мантиссами выполняются раздельно.
Операция вычитания(алгебраического сложения) сводится к операции простого арифметическогосложения при помощи обратного и дополнительного кодов, используемых дляпредставления отрицательных чисел в машине. При этом операция сложенияраспространяется и на разряды знаков, рассматриваемых как разряды целой частичисла.
Чтобы представитьдвоичное отрицательное число (1а) в обратном коде, нужно поставить в знаковыйразряд единицу, а во всех других разрядах заменить единицы нулями, а нули —единицами:
(G-) обр = 1, σ1, σ 2, …, σ n (3)
σi = 1 при γi = 0и σi = 0 при γi = 1.
При записи отрицательногочисла в дополнительном коде ставят единицу в разряд знака, а цифровую частьчисла заменяют дополнением модуля числа до целой единицы.
Отрицательное число G- = — 0, γ1, γ2, …, γn в дополнительном коде имеет вид:
(G-) доп = 1, ε1, ε 2, …, ε n (4)
где
0, ε1, ε 2, …,ε n = 1 — 0, γ1, γ2, …,γn (4a)
Установим связь междусамим отрицательным числом G- и числами (G-)обри (G-)доп, представляющими его обратный и дополнительный коды.
Вычитая (1а) из (3),имеем:
(G-) обр — G- = 1, σ1, σ 2, …, σ n – ( — 0, γ1, γ2, …,γn) = 1,11…1 = 2 – 2-n (так как σi +γi = 1)
Следовательно,
(G-) обр = G- + 2 — 2-n (4b)
Вычитая (1a) из (4), имеем:
(G-) доп- G- = 1, ε1, ε 2, …, ε n — ( — 0, γ1, γ2, …,γn) (5)
Учитывая (4a), получаем:
(G-) доп = G- + 2 (5а)
Из (5) и (5а) следует:
(G-) доп = (G-) обр+ 2-n
где n — число разрядов в числе. Такимобразом, дополнительный код может быть получен из обратного путем добавления кнему единицы младшего разряда.
Рассмотрим представлениенуля. В процессе вычислений могут возникнуть «положительный» и «отрицательный»нули:
+ 0,00…0; — 0,00…0
Представление«положительного» нуля одинаково для прямого, обратного и дополнительного кодов:
(+ 0) пр = 0,00…0
Отрицательный нульизображается: в прямом коде
(- 0) пр = 0,00…0
в обратном коде
(- 0) обр = 1,11…1
в дополнительном коде
(- 0) доп = 1,11…1 + 2-n = 0,00…0
так как перенос изразряда знака теряется.
Используя обратный илидополнительный код, можно операции вычитания и сложения чисел различных знаковсвести к арифметическому сложению кодов чисел.
Рассмотрим использованиеобратного кода при алгебраическом сложении двух двоичных чисел G и Q, когдаодно из них или оба числа отрицательны. Для этого случая может бытьсформулировано следующее правило (предполагаем, что модуль алгебраической суммыменьше единицы).
При алгебраическомсложении двух двоичных чисел с использованием обратного кода положительныеслагаемые представляются в прямом коде, а отрицательные — в обратном ипроизводится арифметическое суммирование этих кодов, включая разряды знаков,которые при этом рассматриваются как разряды целых единиц. При возникновениипереноса из разряда знака единица переноса прибавляется к младшему разрядусуммы кодов (такой перенос называется круговым или циклическим). В результатеполучается алгебраическая сумма в прямом коде, если эта сумма положительна, и вобратном коде, если она отрицательна.
Рассмотрим теперьиспользование дополнительного кода для алгебраического сложения. Приведемсоответствующее правило (полагаем, что модуль алгебраической суммы меньшеединицы).
При алгебраическомсложении двух двоичных чисел с использованием дополнительного кодаположительные слагаемые представляются в прямом коде, а отрицательные — вдополнительном и производится арифметическое суммирование этих кодов, включаяразряды знаков, которые при этом рассматриваются как разряды целых единиц. Привозникновении переноса из разряда знака единица переноса отбрасывается. Врезультате получается алгебраическая сумма в прямом коде, если эта суммаположительна, и в дополнительном коде, если эта сумма отрицательна.
В самом деле, если G-
(G-) доп + (Q-) доп = G- + 2 + G- + 2 = 2 + (G- + Q- + 2)
Так как -1
(G-) доп + (Q-) доп = (G- + Q-) +2 = (G- + Q-) доп
G+ > 0, а Q-
(G+) пр + (Q-) доп = (G+ + Q-) +2
Если при этом 0
(G+) пр + (Q-) доп = (G+ + Q-) пр
(G+ + Q-> 0)
Если же -1
(G+) пр + (Q-) доп = (G+ + Q-) доп
(G+ + Q-
Применениедополнительного или обратного кода для представления отрицательных чиселупрощает операцию алгебраического сложения. Алгебраическое сложение чисел сразными знаками заменяется арифметическим сложением кодов, при этомавтоматически получается код знака результата. Однако остается нерешеннымвопрос о выработке признака переполнения разрядной сетки.
При сложении кодовтеряется единица переноса из разряда целых единиц и результат ошибочновоспринимается как положительное число, меньшее единицы.
Отметим, что приалгебраическом сложении двух чисел G и Q, каждое из которых по модулю меньшеединицы, может возникнуть переполнение разрядной сетки, но при этом модульполучаемой суммы всегда меньше двух. Это обстоятельство облегчает построениекодов, по виду которых можно судить о переполнении разрядной сетки.
Для получения признакапереполнения разрядной сетки применяют модифицированные прямой, дополнительныйи обратный коды. Эти коды отличаются от ранее рассмотренных кодов тем, что дляпредставления знака используются два разряда.
При этом знак плюсобозначается 00, а знак минус — 11. При алгебраическом сложении чисел знаковыеразряды рассматриваются как разряды целой части числа.
При возникновениипереноса единицы из старшего разряда знака эта единица отбрасывается, еслиотрицательные числа представляются модифицированным дополнительным кодом, илипроизводится циклический перенос в младший разряд мантиссы, если отрицательныечисла изображаются модифицированным обратным кодом.
При алгебраическомсложении на переполнение разрядной сетки (модуль алгебраической суммы большеединицы) указывает несовпадение цифр в знаковых разрядах. Комбинации 01 взнаковых разрядах соответствует положительное число, а комбинации 10 —отрицательное число.
В этих случаях модульсуммы:
1 ≤ |x|
Отметим также особенностинормализации и выполнения сдвига для отрицательных чисел, представленных вдополнительном (обратном) коде.
У нормализованногоположительного или отрицательного числа с мантиссой, изображаемой в прямомкоде, цифра в старшем S-ичномразряде мантиссы должна быть отлична от нуля. Для отрицательных мантисс,представленных в обратном или дополнительном коде, условие нормализации |q| ≥1/Sвыполняется, если цифра в старшем S-ичном разряде мантиссы есть нуль.
В случае чисел сплавающей запятой комбинации 01 и 10 в знаковых разрядах мантиссы указывают нанарушение нормализации влево, а комбинации цифр 00 и 1 σs1 (σs1 ≠ 0) в младшем знаковом разряде и старшем S-ичном цифровом разряде мантиссысигнализируют о нарушении нормализации вправо. Для восстановления нормализациипроизводится сдвиг мантиссы вправо (или влево) на нужное число разрядов, приэтом порядок увеличивается (уменьшается) на соответствующее число единиц,
Если отрицательные числапредставляются в дополнительном (обратном) коде, сдвиг производится по особымправилам («модифицированный сдвиг»), с тем чтобы в результате сдвигадополнительного (обратного) кода числа х на m S-ичных разрядов получился дополнительный (обратный) код числаSmx или S-mхсоответственно для сдвига влево или вправо.
При модифицированномсдвиге дополнительного (обратного) кода вправо в освобождающиеся старшиеразряды мантиссы записываются единицы, а при сдвиге влево единицы записываютсяв освобождающиеся младшие разряды.
Деление в прямом,обратном и дополнительном кодах
Деление в вычислительноймашине обычно сводится к выполнению последовательности вычитаний делителясначала из делимого, а затем из образующихся в процессе деления частичныхостатков и сдвига частичных остатков на один разряд влево.
Необходимо отметить, чтов машинах, оперирующих над числами с запятой, фиксированной перед старшимразрядом, деление возможно только в одном случае, если делимое по модулю меньшеделителя. В противном случае частное превышает единицу и выходит за пределыразрядной сетки числа. Если в результате вычитания выясняется, что делимое илиочередной частичный остаток больше или равны делителю, то в очередной разрядчастного записывается единица и полученный в результате вычитания частичныйостаток сдвигается влево на один разряд. Если в результате вычитаниявыясняется, что делимое или очередной частичный остаток меньше делителя, то вочередной разряд частного записывается нуль, к полученной разрядностидобавляется делитель, чтобы восстановить предыдущий частичный остаток, ирезультат сдвигается влево на один разряд. Метод выполнения деления, когда вслучае получения отрицательного остатка при вычитании (частичный остаток меньшеделимого) к нему прибавляется делитель, называется методом деления свосстановлением остатка.
Рассмотрим пример деленияс восстановлением остатка (см. таблицу). Для выполнения операции вычитаниябудем использовать дополнительный код. Деление с восстановлением остаткатребует в наиболее неблагоприятном случае трёх тактов для формирования одногоразряда частного: такта вычитания, такта сложения и такта сдвига.
Рассмотренный метод носитназвание деления с восстановлением остатка.
Недостатком этого методаявляется необходимость введения специального третьего такта для восстановленияостатка, который значительно замедляет ход вычисления.
Обычно в вычислительныхмашинах для деления широко используется другой метод, называемый методом выполненияделения без восстановления остатка. Этот метод основан на прямомкопировании действий при ручном делении («в столбик»).
При этом методе, еслирезультат вычитания получился отрицательный, частичный остаток невосстанавливается путём прибавления делителя, а на следующем шаге делениявместо вычитания делимого производится его прибавление к частичному остатку.Если результат при этом остался отрицательным, то в очередную цифру частногозаписывается нуль и на следующем шаге также выполняется сложение. Еслирезультат сложения получился положительным, то в очередной разряд частногозаписывается единица и на следующем шаге производится вычитание.
Можно показать, чточастичные остатки при делении без восстановления остатка получаются такими же,как и остатки после сдвига восстановленного остатка при делении свосстановлением остатка.
Действительно, посколькусдвиг частичного остатка на один разряд влево эквивалентен умножению его надва, получим:
2a – b = 2(a –b) + b
где a – частичныйостаток; b – делитель.
Аналогично:
/>
Деление безвосстановления остатка всегда требует для получения одной цифры частного толькодвух тактов: такта сложения или вычитания и такта сдвига. Тем самым скоростьвычисления этим методом оказывается выше чем в методе деления с восстановлениемостатка.
Деление правильных дробейвыполняется также, как деление целых чисел. Разница же заключается в том, чтоделимое имеет, как правило, такую же длину, как и делитель. Однако можнопредположить, что делимое имеет ещё n младших разрядов, равных 0. Тогдастановится ясно, что алгоритм деления дробей ничем не отличается от алгоритмаделения целых чисел.
Исходя из рассмотренныхметодов деления в вычислительных машинах наиболее скоростной и простой методявляется метод деления без восстановления остатка, так как при использованииданного метода для получения одной цифры частного необходимо выполнить всеголишь два такта, в то время как в методе с восстановлением частичного остаткадля получения одной цифры частного требуется три такта.
Заключение
В данной курсовой работебыли рассмотрены различные системы счисления (двоичная, восьмеричная,шестнадцатеричная), элементы двоичной «арифметики» а также реализация способовдвоичной арифметики в цифровых вычислительных системах.
В частности былирассмотрены методы двоичного сложения (алгебраического сложения), умножения иделения. Метод двоичного деления был рассмотрен более близко.
Мы рассмотрели дваосновных метода реализации двоичного деления в цифровых вычислительныхсистемах. Напрашивается вывод:
после глубокогорассмотрения двух методов реализации двоичного деления выяснилось, что метод свосстановлением частичного остатка является трудоёмким и неудобным, а такжеоказывается очень медленным в силу того, что для нахождения одного числачастного в этом методе требуется совершить три такта (такт вычитания, тактсложения и такт сдвига), в то время когда в методе без восстановлениячастичного остатка требуется всего лишь два такта (такт сложения(вычитания) итакт сдвига).
Становится ясно, чтоболее эффективным и простым методом для деления двоичных чисел является методбез восстановления частичного остатка, основанный на делении двоичных чисел впрямом, обратном и дополнительном кодах.
Использованнаялитература
1) Каган Б. М., Каневский М. М. – «Цифровые вычислительныемашины и системы» Под. ред. Б. М. Кагана. Изд. «Энергия», М. 1973г.