Бройдо В.Л. Вычислительные системы, сети и телекоммуникации (2002) (1186248), страница 15
Текст из файла (страница 15)
а; Р если У > О, то [У]„- О, а а а ... а; С1 если У< О, то [У]„р 1, а а а ... а; С1 если У- О, то имеет место неоднозначностгс [0]„р = 0,0... или [0]„р = 1,0... Обобщая результаты, получим: [ У, еслиУ>=0, [1-У, если У<0. Если при сложении оба слагаемых имеют одинаковый знак, то операция сложения выполняется обычным путем. Если при сложении слагаемые имеют разные знаки, то сначала необходимо выявить число большее по абсолютной величине, произве- сти из него вычитание меньшего числа, а разности присвоить знак большего числа.
Операции умножения и деления в прямом коде выполняются обычным обра- зом, но знак результата определяется по совпадению или не совпадению зна- ков, участвовавших в операции чисел. Операцию вычитания в этом коде нельзя заменить операцией сложения с от- рицательным числом, поэтому возникают сложности, связанные с заемом зна- чений из старших разрядов уменьшаемого. В связи с этим прямой код в компью- тере почти не применяется. Обратный код числа У вЂ” [У]м, Символ а' означает величину, обратную а (инверсию а), то есть если а - 1, то а' - О, и наоборот. 1З если У > О, то [У]мр - [У]„р - О, а а ... а, гз если У < О, то [У].~р - 1, а' а' ...
а', Ср если У-О,то неоднозначность, [0]мр = 0,00 ... 0 или [0]ыр = 1,11...1. Для того чтобы получить обратный код отрицательного числа, необходимо все рр цифры этого числа инвертировать, то есть в знаковом разряде Поставить 1, во всех значащих разрядах нули заменить единицами, а единицы нулями. Например, число У = 0,1011, [У],,г„0,1011. Число У = — 0,1011, [У]ыр - 1,0100. В случае, когда У < О, [У],г 10 — 1 10 " + У, то есть [У].~р - 1,1111 + У. Обобщая результаты, получим [У, если У >= О, [У [1 =![ [10-1 10 "+У, если У<=0. Дополнительный код числа Х вЂ” [гч]„, Сз если У >- О, то [У],„„- [У]р, - О, а а ... а, рз если У<=О,то [У]„„-1,а'а' ...
а*+ 000...1. Для того чтобы получить дополнительный код отрицательного числа, необхо- димо все его цифры инвертировать (в знаковом разряде поставить единицу, во всех значащих разрядах нули заменить единицами, а единицы нулями) и затем ев Глава 3. Инф рмационно-логические основы построения ВМ к младшему разряду прибавить единицу.
В случае возникновения переноса из первого после запятой разряда в знаковый разряд, к числу следует прибавить единицу в младший разряд. Например, )у'= 0,1011, 1Уту1х, 0,1011; У- -0,1100,1М1мв - 1,0100; М- -0,0000, 1)У'1ма = 10,0000 - 0,0000 (1 исчезает). Неоднозначности в изобРажении 0 нет. Обобщая, можно записать: ~~ Л ~М, еслийг>жО, )у~ =1 ' '(10+лг, если)у <О. СОВЕТ Эмпирическое правило; для получения дополнительного кода отрицательного числа необходимо все символы этого числа инвертировать, кроме последней (младшей) единицы и тех нулей, которые за ней следуют. Прочие системы счисления Кроме рассмотренных выше систем счисления, применяемых внутри компьютера, программисты и пользователи часто используют при работе с компьютерами также двоично-десятичную и шестнадцатеричную системы.
Двоично-десятичная система счисления Двоична-десятичная система счисления получила большое распространение в современныхых компьютерах ввиду легкости перевода в десятичную систему и обратно. Она используется там, где основное внимание уделяется не простоте технического построения машины, а удобству работы пользователя. В этой системе счисления все десятичные цифры отдельно кодируются четырьмя двоичными цифрами и в таком виде записываются последовательно друг за другом. Двоич но-десятичная система не экономична с точки зрения реализации технического построения машины (примерно на 20 хь увеличивается потребное оборудование), но очень удобна при подготовке задач и при программировании.
В двоично-десятичной системе счисления основанием системы счисления является число десять, но каждая из 10 десятичных цифр (О, 1, ..., 9) изображается при помощи двоичных цифр, то есть кодируется двоичными цифрами. Для представления одной десятичной цифры используются четыре двоичных.
Здесь имеется, конечно, избыточность, поскольку четыре двоичных цифры (или двоичная тетрада) могут изобразить не 10, а 16 чисел, но это уже издержки производства в угоду удобства программирования. Существует целый ряд двоична-кодированных десятичных систем представления чисел, отличающихся тем, что определенным сочетаниям нулей и единиц внутри одной тетрады поставлены в соответствие те или иные значения десятичных цифр'. Различные более хитрые способы кодирования десятичных пифр внутри тетрады обусловлены из. быточностью кодирования и применяются для автоматического обнаружения ошибок и сбоев в вычислениях, Представление информации в вычислительных машинах Таблица 3.1.
Таблица двоичных кодов десятичных н шестнадцатеричных цифр цифре Код Цифре Код 1000 оооо ооо! !оо! оо!о !О10 оо!! !О1! атос !!оо О1О! ! То! о!!о !!!о о!!! Например, десятичное число 9703 в двоично-десятичной системе выглядит так: 1001011100000011. Шестнадцатеричная система счисления При программировании иногда используется шестнадцатеричная сиплена счи- сления, перевод чисел из которой в двоичную систему счисления весьма прост— выполняется поразрядно (полностью аналогична переводу из двоична-десятич- ной системы).
Для изображения цифр, больших 9, в шестнадцатеричной системе счисления применяются буквы Л = 10, В = 11, С = 12, 1) = 13, Е = 14, г = 15. Например, шестнадцатеричное число г!7В в двоичной системе выглядит так: 1111000101111011. Выполнение арифметических операций а компыетере . Правила выполнения арифметических операций в двоичной системе счисления аналогичны правилам операций в десятичной системе счисления.
Например: Сложение 101110 ОО)О!! !о!!!о оо!о!! 1ООО!! Вычитание Результат Умножение 111001 Результат Деление 101101 х 101 101101 000000 101101 101101/1О! 1 10 101 Результат (лронзведенне) 11100001 1001 Результат (частное) В наиболее часто испо..ьзуемой естественной двоично-кодированной десятичной системе счисления веса двоичных разрядов внутри тетрады естественны, то есть 8, 4, 2, 1 (табл. 3.1). 70 Глава 3. информационно-логические основы построения ВМ Особенности выполнения операций над числами с плавающей запятой Следует кратко остановиться иа выполнении операции нал числами с плавающей занятой (точкой).
При сложении (вычитании) чисел с одинаковыми иорядкамн их мантиссы складываются (вычи1аются), а результату присваивается порядок, общий лля исходных чисел. Если порядки исходных чисел разные, то сначала зтн порядки нмраянинаются (число с мсныиим порядком приводится к числу с большим иорнлком), затем выполняется операция сложения (вычитания) порядков. Если ири выполнении операции с южеиия мантисс возникает переполнение, то сумма мантисс сдвигается вправо на один разряд, а порядок суммы уне. ~ичивастся на 1.
При умножении чисел с плавающей запятой их мантиссы ие!и миожаются, а порядки складываются. При делении числа с плавающей запятой маптисга делимого делится ца мантиссу делителя,адд!гз игл учения порядка частного из порядка де чимого вычитается порядок лелитсля. Прн игом если мань нгса делимого больн|е мантиссы лелнтеля, то мантисса часпюго окажется больше 1 (происходит переполнение) и ес следует сдвинуть на олин разряд вправо, одновременно углич ив па единицу порядок частного.
Выполнение арифметических операций над числами, представленными в дополнительных кодах При выполнении арифметических оиерашгй в компьютере обычно применяются не простые, а модифицигмюинные коды. Молифишг!юяан мы й код отличается от простого использованием для изображения знака числа двух разряггов. Второй знаковый раз» ряд служит лля автоматичегкогообпарукенна ситуации ие!киолисиня разрядной сетки: при отсутствии переполнения оба знаковых разряда должны иметь одинаковые цифры (нули или единицы), а при переполнении 1ьззрядиой сетки шгфры н них будут р диыс. При переполнении результат сдвигается вправо на одни разряд.
Сложение производится ио обычным правилам сложения двоичных чисел: единица переноса, возникающая из старшего знакового разряда, просто отбрасывается. Примсры сложения: гз Х--01101; У-0100!.Результатгложеиия:!! 0011+001001 — 11,1101(или— 1100); о Х 0,1101; У- 0,1001. Результат сложения: 00,0011+ 00,1001 — 01,0110 (пере- 1 иолисиие, после сдвига нираво получим 00 !0110, или +10110); ! О Х О,! !01; 1' -0.1001. Результатсложення: 00,1100+ 11,0111- 100,0100(или 1 00.0100); О Х -01101; У= -О!001. Результат сложению 110011+! 10111- 101010 (иереиолиепис, после сдвига вправо получим 11,01010, или -10110).
Умножение чисел в дополнительных кодах производится по обычным правилам 1 умножения двоичных чисел, Единсгнениой особенностью является то, что если . сом иожгггсль является отрицательным (знаковыс разряды равны 11). то перед па- . 1 чалом умножения сл«дует приписать к нему слева столько единиц, сколько знача- ~ 71 Представление информации в вычислительных машинах щих разрядов у другого сомножителя справа от запятой. результат (произведе- ние) всегда получаем в дополнительном коде. пРимечАние Добавление единиц слева перед отрицательным числом не изменяет его величины, так как перед положительным числом можно написать сколь угодно нулей не изменяя величины числа; наоборот, перед отрицательным числом (в дополнительном или об- ратном кодах) добавление лишних нулей недопустимо.