- •Оренбург 2008 г.
- •Оренбург
- •Оглавление
- •Введение
- •Краткая характеристика дисциплины
- •Основные требования к уровню освоения содержания дисциплины
- •Основные понятия информатики История развития информатики
- •Структура современной информатики
- •Информатика как единство науки и технологии
- •Структура современной информатики
- •Место информатики в системе наук
- •Социальные аспекты информатики
- •Правовые аспекты информатики
- •Этические аспекты информатики
- •Общая характеристика процессов сбора, передачи, обработки и накопления информации различные уровни представлений об информации
- •Виды и свойства информации
- •Качество информации
- •Восприятие, сбор, передача обработка и накопление информации
- •Единицы измерения информации
- •Семантическая мера информации
- •Прагматическая мера информации
- •Системы счисления
- •Перевод из десятичной системы счисления в двоичную
- •Восьмеричная и шестнадцатеричная системы
- •Арифметические и логические основы цифровых эвм Почему компьютер считает не так, как мы?
- •Отрицательные числа в компьютере
- •Алгоритмизация и программирование Понятие и свойства алгоритма
- •Правила построения алгоритмов
- •Виды алгоритмов
- •Способы записей алгоритмов
- •3. Описание на каком-либо языке программирования (программа).
- •Блок схема
- •Символы блок-схем
- •Структуры алгоритмов
- •Рекомендуемая литература
Отрицательные числа в компьютере
Компьютеру приходится иметь дело не только с положительными, но и с отрицательными числами. Они могут находиться и среди исходных данных задачи, и получаться в процессе ее решения. Для запоминания знака числа в его двоичном представлении выделяется самый старший разряд ячейки памяти (байта, слова или двоичного слова).
Разработчики первых ЭВМ со знаком числа распорядились просто: для положительных чисел в знаковый разряд записывается нуль, а для отрицательных – единицу. Такой способ представления двоичных чисел получил название прямого кода:
-
0
00 0 0 0 0 0 0 0 0 0 0 1 1
– число +3
Однако он оказался не очень удачным, т. к. такие простые и часто используемые операции, как сложение/вычитание, машине иногда приходилось выполнять в два этапа. Это ведь человек видит, какое слагаемое больше по абсолютной величине, когда ему приходится вычитать 7 из 2. А машина «сообразит» об этом только после неудачной попытки произвести заем из несуществующих разрядов. После этого она произведет обратное вычитание (2 из 7) и сменит у результата знак. И такие два действия вместо одного машине приходилось делать ровно в 25% всевозможных сочетаний знаков и абсолютных величин слагаемых.
В поисках более эффективных решений сначала был предложен обратный код для хранения отрицательных чисел, в котором все разряды числа заменялись на противоположные:
-
1
00 0 0 0 0 0 0 0 0 0 0 1 1
число -3
В обратном коде придумывались хитроумные способы сложения, в которых знаковый разряд принимал участие в операции таким же образом, как и все остальные. Однако возникавший при этом перенос из знакового разряда добавлялся к младшему разряду суммы.
Наконец, был придуман дополнительный код, который получался из обратного кода отрицательного числа путем прибавления к нему единицы в младший разряд:
-
1
1 1 1 1 1 1 1 1 1 1 1 1 0 0
число -3 обратный код
1
1 1 1 1 1 1 1 1 1 1 1 1 0 1
число -3 дополнительный код
Примеры:
Число |
Двоичный код |
Прямой код |
Обратный код |
Дополнительный код |
23 |
10111 |
00010111 |
00010111 |
00010111 |
-1 |
-1 |
10000001 |
11111110 |
11111111 |
-17 |
-10001 |
10010001 |
11101110 |
11101111 |
-70 |
-1000110 |
11000110 |
10111001 |
10111010 |
Свое название дополнительный код получил из-за того, что сумма k-разрядного положительного двоичного числа + N со своей отрицательной парой –N дает . В этом нетрудно убедиться. Сложите двоичное положительное число+ N с двоичным эквивалентом –N в обратном коде. В каждом разряде суммы получится 1, т. к. соответствующие разряды чисел + N и –N всегда противоположны. А теперь добавьте к двоичному коду из k единиц недостающую единицу в младший разряд, то получится .
Таким образом, в дополнительном коде числа + N и –N дополняют друг друга до соответствующей степени двойки.
Операция сложения в дополнительном коде всегда выполняется за один такт. При этом знаковые разряды складываются, как и все остальные, а перенос из них игнорируется.
Как видите, игра стоит свеч. Только за счет выбора хитроумного кода удалось на 25% повысить выполнения арифметических операций, не вложив практически никаких затрат в аппаратуру.
Контрольные вопросы:
В чем отличие позиционной системы счисления от непозиционной?
Каковы способы перевода чисел из одной системы счисления в другую?
В чем заключается преимущество использования восьмеричной и шестнадцатеричной систем счисления в вычислительной технике?
Выполнить перевод из одной системы счисления в другую:
7358 = ?10 ; 11011,0112 = ?10 ; 34710 = ?2 ; 23,4816 = ?10 ; 358 = ?10 ;
351,34310 =?2 ; 1010010112=?16 ;10111000112=?8 ; 0,4510=?2 ; 5F16=?8