в компьютере
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ
ЧИСЕЛ
Так как любое целое число можно представить как
вещественное, но с нулевой дробной частью, то можно
было бы ограничиться представлением в компьютере
вещественных чисел и реализацией арифметических
действий над ними.
Однако для
эффективного использования памяти
повышения скорости выполнения вычислений
введения операции деления нацело с остатком ( в
паскале DIV и MOD)
Целые числа представляются специально для них
предназначенными способами.
Введение специальных способов представления
целых чисел оправдано тем, что часто в задачах,
решаемых с помощью компьютера, многие
действия сводятся к операциям над целыми
числами. Например,
в задачах экономического характера, где
данными служат количества акций,
сотрудников, деталей, транспортных средств
и т.д.
для обозначения даты и времени;
для нумерации различных объектов:
элементов массивов, записей в базах данных,
машинных адресов и т.п.
Целые числа в компьютере хранятся в
формате с фиксированной запятой (точкой).
Способы компьютерного
представления целых чисел
отличаются:
количеством разрядов (8, 16,
32, 64-х разрядные сетки)
наличием или отсутствием
знакового разряда
БЕЗЗНАКОВОЕ
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ
ЧИСЕЛ
Все разряды ячейки отводятся под само число.
1. 8-разрядная сетка
7 6 5 4 3 2 1 0 - разряды
0 0 1 1 0 1 0 0
Пример: 5210= 1101002
Диапазон представляемых чисел:
Аmin=000000002=010 В паскале – тип BYTE
Amax=11111111=28-1=25510
Диапазон 0..255
2. 16-разрядная сетка
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -разряды
0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0
Диапазон представляемых чисел:
Аmin=00000000000000002=010
Amax=1111111111111111=216-1=6553510
Диапазон 0..65535
1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0
Amax= =215-1=3276710
Аmin= - 3276810
В паскале – тип INTEGER
Машинные коды чисел
В компьютере с помощью применения
специальных машинных кодов чисел
все арифметические операции над
числами сводятся к операциям
арифметического сложения и сдвигу
кодов.
Прямой машинный код
Представление числа в привычной форме «знак-
величина», когда первый бит n-разрядного слова
знаковый, а остальные n-1 битов представляют
цифровые разряды числа в двоичной системе
счисления, называется прямым кодом двоичного
числа.
Прямой код целого числа полностью совпадает с
записью самого числа в разрядной сетке компьютера.
Прямой код отрицательного целого числа отличается от
прямого кода соответствующего положительного числа
содержимым знакового разряда
Пример. Прямой код чисел Х=110112 и Y=-110112 в
восьмиразрядной сетке имеет вид:
[Xпк]=00011011
[Yпк]=10011011
В системе прямых кодов существует два различных
представления нуля:
00000000 – положительный 0;
10000000 – отрицательный 0.
Оба представления совершенно равноправны.
Прямой код используется для хранения положительных
и отрицательных чисел в запоминающих устройствах и
для представления положительных чисел при
выполнении операций в арифметических устройствах.
Дополнительный код
Для упрощения конструкций арифметических устройств
вычислительных машин все арифметические операции,
как правило, сводятся к сложению (операция
вычитания) или к сериям сложений и сдвигов (операции
умножения и деления).
Замена операции вычитания (алгебраического сложения)
на арифметическое сложение в компьютере
осуществляется с помощью обратного и
дополнительного кодов.
Дополнительный код положительного числа совпадает
с прямым и обратным кодом этого числа.
Объяснение сущности
специальных кодов
Рассмотрим на примере реверсивного счётчика для 3-х
разрядных десятичных чисел:
999 + 1= 1 000 -переполнение
002 … 497 разрядной сетки!
001
+
498 000 - 1 = -1 -по счётчику 999 – код –1!
000 499
a + (-a) = 0
999 500
998 - 501 005 + (-005) = 000
997 502
… 005 + 995 = 1 000
995 – дополнительный код числа -005
5 – 2 = 5 + (-2) = 5 + 998 = 1 003 Если учесть, что единица
переполнения теряется,то
7 – 5 = 7 + (-5) = 7 + 995 = 1 002 получаем правильные результаты
Для устранения неоднозначности в кольце будем считать половину
состояний (0-499) кодами нуля и положительных чисел, а
оставщуюся половину (500-999) –кодами отрицательных чисел.
Дополнительный код
отрицательного числа
Дополнительный код получается путём
добавления единицы к младшему разряду
обратного кода.
В дополнительном коде ноль имеет
единственное представление. Для данной
длины разрядной сетки дополнительным
кодом представляется на единицу больше
отрицательных чисел, чем положительных.
Алгоритм получения дополнительного
кода отрицательного числа.
М=-20=-101002
[M дк]16=FFEC
Действия над машинными
кодами целых чисел
Дано: десятичные числа А= 34 и В = 30
Найти: А+В, А – В, В – А в двоичных машинных
кодах в 8 разрядной сетке.
1) А=34=2216 В=30=1E16
[KA]пк=002216 [KB]ПК=001E16
KA + KB = 0022 + 001E = 004016 A + B =4.161 + 0.160 = 64
2) [K-B]ПК=801E16 [K-B]ДК=1000016 - 1E16 = FFE216
KA + K-B = 0022 + FFE2 = 1 0004
А - В = 4.160 = 4
Представление вещественных
чисел в компьютере
Любое число в экспоненциальной (нормальной) форме
представляется в виде: +
+p
A= mA.q
Нормализованная -
- мантисса: 1 <|m|<1
32-разрядная сетка: q
31 30 2928 … 23 22 ...2 1 0
характеристика мантисса
Знак мантиссы