Similar presentations:
Кодирование чисел в компьютере
1.
Кодирование чиселв компьютере
2.
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХЧИСЕЛ
Так как любое целое число можно представить как
вещественное, но с нулевой дробной частью, то можно
было бы ограничиться представлением в компьютере
вещественных чисел и реализацией арифметических
действий над ними.
Однако для
эффективного использования памяти
повышения скорости выполнения вычислений
введения операции деления нацело с остатком ( в
паскале DIV и MOD)
Целые числа представляются специально для них
предназначенными способами.
3.
Введение специальных способов представленияцелых чисел оправдано тем, что часто в задачах,
решаемых с помощью компьютера, многие
действия сводятся к операциям над целыми
числами. Например,
в задачах экономического характера, где
данными служат количества акций,
сотрудников, деталей, транспортных средств
и т.д.
для обозначения даты и времени;
для нумерации различных объектов:
элементов массивов, записей в базах данных,
машинных адресов и т.п.
4.
Целые числа в компьютере хранятся вформате с фиксированной запятой (точкой).
Способы компьютерного
представления целых чисел
отличаются:
количеством разрядов (8, 16,
32, 64-х разрядные сетки)
наличием или отсутствием
знакового разряда
5.
БЕЗЗНАКОВОЕПРЕДСТАВЛЕНИЕ ЦЕЛЫХ
ЧИСЕЛ
Все разряды ячейки отводятся под само число.
1. 8-разрядная сетка
7
0
6
0
5
1
4
1
3
0
2
1
1
0
0
0
- разряды
Пример: 5210= 1101002
Диапазон представляемых чисел:
Аmin=000000002=010
Amax=11111111=28-1=25510
Диапазон 0..255
В паскале – тип BYTE
6.
2. 16-разрядная сетка10
9
8
7 6 5 4 3 2 1 0
15
14
13
12
11
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
В паскале – тип WORD
3. 32-разрядная сетка
Аmin=0
Amax= 232-1=4 294 967 295
4. 64-разрядная сетка
Аmin=0
Amax= 264-1=18 446 744 073 709 551 615
7.
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХЧИСЕЛ СО ЗНАКОМ
Старший разряд разрядной сетки отводится под знак:
0 – для положительного числа
1 – для отрицательных чисел
1. 8-разрядная сетка Пример: 5210=1101002
7
0
6
0
Знак
положительного
числа
5
1
4
1
2
1
1
0
0
1
1
- разряды
0
0
Пример: -5210= -1101002
7
6
5
4
3
1
Знак
отрицательного
числа
3
0
0
2
1
1
0
0
0
8.
Диапазон представляемых чисел:Amax=1111111=27-1=12710
Аmin= - 12810
В паскале – тип SHORTINT
2. 16-разрядная сетка
15
14
13
12
11
10
9
8
7 6 5 4 3 2 1 0
1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0
Amax= =215-1=3276710
Аmin= - 3276810
В паскале – тип INTEGER
9.
Машинные коды чиселВ компьютере с помощью применения
специальных машинных кодов чисел
все арифметические операции над
числами сводятся к операциям
арифметического сложения и сдвигу
кодов.
10.
Прямой машинный кодПредставление числа в привычной форме «знаквеличина», когда первый бит n-разрядного слова
знаковый, а остальные n-1 битов представляют
цифровые разряды числа в двоичной системе
счисления, называется прямым кодом двоичного числа.
Прямой код целого числа полностью совпадает с
записью самого числа в разрядной сетке компьютера.
Прямой код отрицательного целого числа отличается от
прямого кода соответствующего положительного числа
содержимым знакового разряда
Пример. Прямой код чисел Х=110112 и Y=-110112 в
восьмиразрядной сетке имеет вид:
11.
[Xпк]=00011011[Yпк]=10011011
В системе прямых кодов существует два различных
представления нуля:
00000000 – положительный 0;
10000000 – отрицательный 0.
Оба представления совершенно равноправны.
Прямой код используется для хранения положительных
и отрицательных чисел в запоминающих устройствах и
для представления положительных чисел при
выполнении операций в арифметических устройствах.
12.
Дополнительный кодДля упрощения конструкций арифметических устройств
вычислительных машин все арифметические операции,
как правило, сводятся к сложению (операция
вычитания) или к сериям сложений и сдвигов (операции
умножения и деления).
Замена операции вычитания (алгебраического
сложения) на арифметическое сложение в компьютере
осуществляется с помощью обратного и
дополнительного кодов.
Дополнительный код положительного числа совпадает
с прямым и обратным кодом этого числа.
13.
Объяснение сущностиспециальных кодов
Рассмотрим на примере реверсивного счётчика для 3-х
разрядных десятичных чисел:
-переполнение
999
+
1=
1
000
002 … 497
разрядной сетки!
001
498
000 - 1 = -1 -по счётчику 999 – код –1!
000
999
998
997
+
-
…
499
500
501
502
a + (-a) = 0
005 + (-005) = 000
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) –кодами отрицательных чисел.
14.
Дополнительный кодотрицательного числа
Дополнительный код получается путём
добавления единицы к младшему разряду
обратного кода.
В дополнительном коде ноль имеет
единственное представление. Для данной
длины разрядной сетки дополнительным
кодом представляется на единицу больше
отрицательных чисел, чем положительных.
15.
Алгоритм получения дополнительногокода отрицательного числа.
1. Модуль числа представить прямым кодом
в k двоичных разрядах.
2. Значения всех бит, кроме знакового,
инвертировать: все нули заменить на
единицы, а единицы на нули (таким
образом получается k-разрядный
обратный код исходного числа);
3. К полученному обратному коду,
прибавить единицу к младшему разряду с
учетом переносов.
16.
Примеры.1. Дано отрицательное целое десятичное число
M=-20. Представьте число в машинном коде в 16разрядной сетке в двоичной и 16-ричной системах
счисления.
М=-20=-101002
[Mпк]2=1.000 0000 0001 0100
[M ок]2=1.111 1111 1110 1011
[M дк]2=1.111 1111 1110 1100
[M дк]16=FFEC
17.
Действия над машиннымикодами целых чисел
Дано: десятичные числа А= 34 и В = 30
Найти: А+В, А – В, В – А в двоичных машинных
кодах в 8 разрядной сетке.
[Aпк] = [Аок] = [Адк] = 0.010 00102
[-Aпк] = 1.010 0010
[-Bпк] =1.001 1110
[-Аок] = 1.101 1101
[-Вок] = 1.110 0001
[-Адк] =1.101 1110
[-Вдк] = 1.110 0010
[Впк] = [Вок] = [Вдк] = 0.001 11102
18.
2. Дано целое число в виде 16-ричного двоичногомашинного кода. Определите десятичное значение
данного числа: Ka=FFD4
Первая цифра F, следовательно, число отрицательное
и хранится в компьютере в форме дополнительного
машинного кода.
FFD416 = [1.111 1111 1101 0100дк]
-0.000 0000 0000 0001
[1.111 1111 1101 0011ок] – обратный код числа
[Ka]ПК=[1.000 0000 0010 1100пк] – прямой двоичный код числа
Тогда десятичное число а = - 101100 = - (32+8+4) = -44
– десятичное число
19.
Дополнительный код для отрицательного числа равендополнению его величины до числа, возникающего при
переполнении разрядной сетки qn, где q – основание
системы счисления, n – число разрядов в разрядной
сетке. qn - называют константой образования
дополнительного кода
Операцию С = А – В, где А и В – целые положительные
числа в любой системе счисления, можно представить в
виде:
С = А – В = А + (-В) = А + (-В) + qn – qn = A +(qn- B)- qn
А –первое слагаемое
qn – В – дополнительный код числа –В (второго слагаемого)
qn – константа, ликвидирующая единицу переполнения
20.
Примеры.1. Даны целые десятичные числа M=-20 и N=20.
Представьте числа в машинном коде в 16-разрядной
сетке в двоичной и 16-ричной системах счисления.
N=20= 1416 =101002
ПКN= ДКN= 00000000000101002=001416
М=-20=-1416 =-101002
K N =001416
ПКМ=10000000000101002=801416
ДКМ= 1000016 - ПКМ 16 =1000016 – 001416= FFEC16
ДКМ=FFEC16= 1111 1111 1110 11002
K M =FFEC16
21.
2. Дано целое число в виде 16-ричного машинногокода. Определите десятичное значение данного числа:
Ka=FFD4
Первая цифра F, следовательно, число
отрицательное и хранится в компьютере в
форме дополнительного машинного кода.
Так как дополнительный код для отрицательного числа
равен дополнению его величины до числа, возникающего
при переполнении разрядной сетки qn, то
FFD416 =ДКa
ПКa =1000016 – ДКa 16 =
1000016 – FFD416= 002C16
Тогда десятичное число
а = - 2C16 = - (32+12) = -44
22.
Действия над машинными кодами чисел сфиксированной точкой ( в 16-ричной системе
счисления)
Дано: десятичные числа А= 34 и В = 30
Найти: А+В, А – В, В – А в 16-ричных машинных
кодах в 16 разрядной сетке.
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
23.
Представление вещественныхчисел в компьютере
Любое число в экспоненциальной (нормальной) форме
представляется в виде:
+
+
A = - mA.q - p
Нормализованная мантисса: 1 <|m|<1
q
32-разрядная сетка:
31 30 2928 …
23 22
Знак порядка порядок
Знак мантиссы
...2 1 0
мантисса
24.
В современных компьютерах машинная форма числахранит не сам порядок, а его смещенное значение –
характеристику числа. Это сделано для того, чтобы не
хранить знак порядка и, значит,
облегчить действия над порядками;
увеличить диапазон представляемых чисел.
31 30 2928 …
характеристика
23 22
...2 1 0
мантисса
Знак мантиссы
Нормализованная мантисса всегда имеет целый разряд 0
и, следовательно, этот 0 в памяти компьютера не
хранится, а только подразумевается. Это полезное
техническое решение позволяет увеличить количество
цифр и, следовательно, точность вычислений.
25.
ПримерыВещественные числа представить как машинные коды
чисел с плавающей точкой в 32-разрядной сетке в 16с/с:
9
7
а) А=32008,5 б) В= - 32008,5 в) С= 15
г) D= - 16
8
Найдем нормализованные мантиссы и характеристики
этих чисел:
а) А=32008,5=7D08,816=0,7D088.104
mA=00.7D088
Знак
Характеристика
pxA=4+40=4416=10001002
-0
- 1000100
Дробная часть мантиссы
- 0111 1101 0000 1000 1000 0000
Нормализованная мантисса - 1111 1010 0001 0001 0000 0000
Характеристика - 100 0011
KA= 0.100 0011.1111 1010 0001 0001 0000 00002 =
= 43FA110016 > 0
26.
б) B= -32008,5= -7D08,816= - 0,7D088.164mB= -0,7D088
pxB=4+40=4416=10001002
Знак
-1
Характеристика
- 1000100
Дробная часть мантиссы
- 0111 1101 0000 1000 1000 0000
Нормализованная мантисса
- 1111 1010 0001 0001 0000 0000
- 100 0011
Характеристика
KB= 1.1000011.1111 1010 0001 0001 0000 00002 =
= C3FA110016 < 0
27.
в) С= 15 14=F,E16
16
mc=0,FE16
pxA=40+1=4116
Знак
-0
Характеристика - 1000001
Дробная часть
- 1111 1110 0000 0000 0000 0000
мантиссы
KC= 0.1000001.1111 1110 0000 0000 0000 00002 =
=41FE000016 > 0
в) D= - 9
= - 0,916
mB=0,91616
pxB=40+0=4016
Знак
-1
Характеристика
- 1000000
Дробная часть
- 1001 0000 0000 0000 0000 0000
мантиссы
KD= 1.1000000.1001 0000 0000 0000 0000 00002 = C090000016 < 0
28.
Действия над числами, представленнымив экспоненциальной форме
1. Числа в экспоненциальной форме хранятся в памяти
в прямом коде с нормализованными мантиссами.
2. Сложение кодов производится путём сложения
мантисс только при одинаковых порядках
(характеристиках) слагаемых. За общий выбирается
наибольший порядок.
3. Алгоритмы операции алгебраического сложения
после выравнивания характеристик зависят от знаков
слагаемых.
4. Результаты в прямом коде нормализуются.
29.
ПримерыВыполнить операцию сложения машинных кодов чисел A и B с
плавающей точкой в 32-хразрядной сетке. В качестве ответа
записать код результата (в 2-ой и 16-ой с/с) и соответствующее этому
коду десятичное число
1) KA =43.F34000
a) mA=00.F34
PAx=43
KB = C1.A13000
mB=00.A13
PBx=41 => P =2 =>
mB =00.00A13 – ПК
_100.00000
00.00A13
FF.FF5ED
b) mA+mB = 00.F34
FF.FF5ED
100.F29ED > 0 => mA+B = 00.F29ED
30.
PA+B = 3A+B = 0.F29ED.103 = F29,ED16= 15.162+
2.161+9.160+14/16+13/256 = 3881 237/256
K A+B =0.100 0011.1111 0010 1001 1110 1101 00002=
= 43.F29ED0