Similar presentations:
Компьютерная арифметика
1. Компьютерная арифметика
1Компьютерная
арифметика
§ 26. Особенности представления чисел в
компьютере
§ 27. Хранение в памяти целых чисел
§ 28. Операции с целыми числами
§ 29. Хранение в памяти вещественных чисел
§ 30. Операции с вещественными числами
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
2. Компьютерная арифметика
2Компьютерная
арифметика
§ 26. Особенности
представления чисел в
компьютере
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
3. Предельные значения чисел
Компьютерная арифметика, 10 класс3
Предельные значения чисел
В математике нет предельных значений!
В компьютере – конечное число деталей, ограниченное
количество разрядов.
? Какой диапазон?
10000?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
4. Предельные значения чисел
Компьютерная арифметика, 10 класс4
Предельные значения чисел
система счисления
с основанием B
Cmax B 1
K
K разрядов
Переполнение разрядной сетки — это ситуация, когда
число, которое требуется сохранить, не умещается в
имеющемся количестве разрядов вычислительного
устройства.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
5. Вещественные числа
Компьютерная арифметика, 10 класс5
Вещественные числа
? Какой диапазон?
система счисления с
основанием B
F разрядов в
дробной части
К.Ю. Поляков, Е.А. Ерёмин, 2013
Cmin B
F
http://kpolyakov.spb.ru
6. Неточность представления
Компьютерная арифметика, 10 класс6
Неточность представления
0,1234567
! Не все вещественные числа могут быть
представлены в компьютере точно!
1,3211
1,3212
1,3214
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
7. Сравнение вещественных чисел
Компьютерная арифметика, 10 класс7
Сравнение вещественных чисел
X 10 , Y 10
6
X Y 1
6
хранится неточно!
неточный результат!
0,3 0,1 0,1 0,1
! При сравнении вещественных чисел
желательно избегать операции «равно»!
X Y 1
1 X Y
X Y
X Y
К.Ю. Поляков, Е.А. Ерёмин, 2013
допустимая
погрешность (10-6)
http://kpolyakov.spb.ru
8. Дискретность
Компьютерная арифметика, 10 класс8
Дискретность
1. Целые числа дискретны.
2. Вещественные числа непрерывны.
3. Компьютер работает только с дискретными данными.
! Для хранения вещественных чисел
нужна дискретизация!
4. При дискретизации может происходить потеря
информации (искажение данных).
5. Большинство трудностей связано с кодированием
вещественных чисел.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
9. Компьютерная арифметика
9Компьютерная
арифметика
§ 27. Хранение в памяти
целых чисел
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
10. Целые числа без знака (unsigned)
Компьютерная арифметика, 10 классЦелые числа без знака (unsigned)
Беззнаковые данные – не могут быть отрицательными.
78 = 10011102
младший
старший
7
6
5
4
3
2
1
0
0
1
0
0
1
1
1
0
старший полубайт
старшая цифра
416
биты
младший полубайт
младшая цифра
E16
10011102 = 4E16 = ‘N’
10
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
11. Целые числа без знака
Компьютерная арифметика, 10 класс11
Целые числа без знака
X 10
0
1
…
127
128
…
255
X 16
0016
0000
00002
0116
…
7F16
8016
…
FF16
0000 00012
…
…
1111 11112
X2
0 FF
1111 1111
0000 0001
+
0111 11112 1000 00002
16
255
1 0000 0000
4016
64
192
C016
128
8016
0
64
128
192
255
016
4016
8016
C016
FF16
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
12. Целые числа без знака: диапазон
Компьютерная арифметика, 10 класс12
Целые числа без знака: диапазон
X max 2 1
K
K
Xmin
Xmax
8
0
255
16
0
65 535
32
0
4 294 967 295
64
0
18 446 744 073 709 551 615
К.Ю. Поляков, Е.А. Ерёмин, 2013
типы данных
byte (Паскаль)
unsigned char (Си)
word (Паскаль)
unsigned short (Си)
cardinal (Delphi)
unsigned int (Си)
unsigned long
long (Си++)
http://kpolyakov.spb.ru
13. Целые числа со знаком
Компьютерная арифметика, 10 класс13
Целые числа со знаком
? Сколько места требуется для хранения знака?
Старший (знаковый) бит числа определяет его знак.
Если он равен 0, число положительное, если 1, то
отрицательное.
Прямой код:
≥0
78 = 10011102
0
1
0
0
1
1
1
0
– 78 = –10011102
1
1
0
0
1
1
1
0
<0
операции с положительными и отрицательными
числами выполняются по-разному!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
14. Целые числа со знаком
Компьютерная арифметика, 10 класс14
Целые числа со знаком
Идея: «– 1» должно быть представлено так, чтобы при
сложении с числом «1» получить 0.
? Как кодируется «-1»?
1111 1111
+ 0000 0001
1 0000 0000
-1 255
1
256
Для 8-битных чисел: код числа «–X» равен двоичному
коду числа 256 – X (дополнение до 256).
! При K-битном кодировании дополнительный код
числа «–X» равен двоичному коду числа 2K – X
(дополнение до 2K).
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
15. Как построить дополнительный код?
Компьютерная арифметика, 10 класс15
Как построить дополнительный код?
Алгоритм А0: перевести число 2K – X в двоичную
систему счисления.
для вычислений требуется K+1 разряд
Алгоритм А1:
1) перевести число X в двоичную систему счисления;
2) построить обратный код, выполнив инверсию всех
битов (заменить 0 на 1 и наоборот);
3) к результату добавить 1.
78 = 010011102
10110001 инверсия
-78 10110010 +1
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
16. Как построить дополнительный код?
Компьютерная арифметика, 10 класс16
Как построить дополнительный код?
Алгоритм А2:
1) перевести число X-1 в двоичную систему счисления;
2) выполнить инверсию всех битов.
78 - 1 = 77 = 010011012
-78 10110010 инверсия
Алгоритм А3:
1) перевести число X в двоичную систему счисления;
2) выполнить инверсию всех старших битов числа,
кроме младшей единицы и нулей после нее.
78 = 010011102
-78 10110010 инверсия
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
17. Целые числа со знаком
Компьютерная арифметика, 10 класс17
Целые числа со знаком
X 10
–128
–127
…
–1
0
…
127
X 16
8016
1000
00002
8116
…
FF16
0016
…
7F16
1000 00012
…
…
0111 11112
X2
1111 11112 0000 00002
8016 7F
16
–128 127
С016 – 64
64 4016
–1 0 1
FF16
1
–128
–64
–1 0 1
64
127
8016
С016
FF16 0116
4016
7F16
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
18. Целые числа co знаком: диапазон
Компьютерная арифметика, 10 класс18
Целые числа co знаком: диапазон
X min 2
X max 2
K 1
K
Xmin
Xmax
8
– 128
127
16
– 32 768
32 767
32
– 2 147 483 648
2 147 483 647
64
– 263
263 – 1
К.Ю. Поляков, Е.А. Ерёмин, 2013
K 1
1
типы данных
shortInt (Delphi)
char (Си)
smallInt (Delphi)
short (Си)
integer (Delphi)
int (Си)
int64 (Delphi)
long long (Си)
http://kpolyakov.spb.ru
19. Задачи
Компьютерная арифметика, 10 класс19
Задачи
1. Запишите приведенное в задании натуральное
число в 8-битную ячейку памяти.
113
122
90
01110001
01111010
01011010
2. Запишите приведенное в задании отрицательное
целое число в 8-битную ячейку памяти.
-51
-102
-55
К.Ю. Поляков, Е.А. Ерёмин, 2013
11001101
10011010
11001001
http://kpolyakov.spb.ru
20. Домашнее задание
Компьютерная арифметика, 10 класс20
Домашнее задание
1. Запишите приведенное в задании натуральное
число в 8-битную ячейку памяти.
119, 110, 51
2. Запишите приведенное в задании отрицательное
целое число в 8-битную ячейку памяти.
-84, -124, -103
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
21. Компьютерная арифметика
21Компьютерная
арифметика
§ 28. Операции с целыми
числами
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
22. Сложение и вычитание
Компьютерная арифметика, 10 класс22
Сложение и вычитание
! Операции с положительными и отрицательными
числами выполняются по одинаковым алгоритмам!
+ 5
-9
-4
+ 0000 0101
1111 0111
1111 1100
! Вычитание = сложение с дополнительным кодом
вычитаемого!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
23. Переполнение
Компьютерная арифметика, 10 класс23
Переполнение
дополнительный
бит
0 01100000
0 00100001
0 1 0000001
S’ S
знаковый бит
96
33
-127
1 10100000
+
1 11011111
1 0 1111111
S’ S
-96
-33
127
+
! Если бит S не совпадает с битом S’,
произошло переполнение и результат неверный.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
24. Задачи
Компьютерная арифметика, 10 класс24
Задачи
1. Какое число получится, если сложить два числа,
приведенных в задании, в 8-битной арифметике без
знака?
70+227
93+201
41
38
2. Какое число получится если сложить два числа,
приведенных в задании, в 8-битной арифметике со
знаком?
60+76
89+144
-120
-23
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
25. Задачи
Компьютерная арифметика, 10 класс25
Задачи
1. Какое число получится, если сложить два числа,
приведенных в задании, в 16-битной арифметике без
знака?
30531+35045
30006+35551
40
21
2. Какое число получится если сложить два числа,
приведенных в задании, в 16-битной арифметике со
знаком?
21462+11346
20218+12608
К.Ю. Поляков, Е.А. Ерёмин, 2013
-32728
-32710
http://kpolyakov.spb.ru
26. Домашнее задание
Компьютерная арифметика, 10 класс26
Домашнее задание
1. Какое число получится, если сложить два числа,
приведенных в задании, в 8-битной арифметике без
знака?
94+196
83+204
2. Какое число получится если сложить два числа,
приведенных в задании, в 8-битной арифметике со
знаком?
98+117
68+71
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
27. Домашнее задание
Компьютерная арифметика, 10 класс27
Домашнее задание
1. Какое число получится, если сложить два числа,
приведенных в задании, в 16-битной арифметике без
знака?
32767+32860
32612+33017
2. Какое число получится если сложить два числа,
приведенных в задании, в 16-битной арифметике со
знаком?
19559+13284
19288+13513
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
28. Умножение
Компьютерная арифметика, 10 класс28
Умножение
× 00001001
9
5
00000101
00001001
+ 00000000
00001001
0000101101 45
× 11110111
-9
5
00000101
11110111
+ 00000000
11110111
10011010011 -45
! Умножение выполняется с помощью сложения и
сдвига.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
29. Поразрядные логические операции
Компьютерная арифметика, 10 класс29
Поразрядные логические операции
Поразрядные операции выполняются
с отдельными битами числа и не
регистр
влияют на остальные.
? Сложение – это поразрядная
операция?
Операция «НЕ» (инверсия, not):
R
1
0
0
1
1
0
1
0
not R
0
1
1
0
0
1
0
1
К.Ю. Поляков, Е.А. Ерёмин, 2013
0
1
0
0
1
0
0
0
http://kpolyakov.spb.ru
30. Логическая операция «И» (and, &)
Компьютерная арифметика, 10 класс30
Логическая операция «И» (and, &)
данные
маска
D
M
0
1
0
1
0
0
1
1
Маска – константа, которая
определяет область
применения логической
операции к битам
многоразрядного числа.
AA16 and 6C16 = ?
D and
M
0
0
0
1
7
6
5
4
3
2
1
0
D
1
0
1
0
1
0
1
0
AA16
M
0
1
1
0
1
1
0
0
6С16
D and M
0
0
1
0
1
0
0
0
2816
! С помощью операции «И» можно сбросить
(установить в ноль) биты, для которых маска равна 0!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
31. Логическая операция «ИЛИ» (or, |)
Компьютерная арифметика, 10 класс31
Логическая операция «ИЛИ» (or, |)
D
0
1
0
1
D or M
0
1
1
1
M
0
0
1
1
AA16 or 6C16 = ?
7
6
5
4
3
2
1
0
D
1
0
1
0
1
0
1
0
AA16
M
0
1
1
0
1
1
0
0
6С16
D or M
1
1
1
0
1
1
1
0
EE16
! С помощью операции «ИЛИ» можно записать
единицу в биты, для которых маска равна 1!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
32. Операция «исключающее ИЛИ» (xor, ^)
Компьютерная арифметика, 10 класс32
Операция «исключающее ИЛИ» (xor, ^)
D xor
M
0
1
1
0
D
M
AA16 xor 6C16 = ?
0
1
0
1
0
0
1
1
7
6
5
4
3
2
1
0
D
1
0
1
0
1
0
1
0
AA16
M
0
1
1
0
1
1
0
0
6С16
D xor M
1
1
0
0
0
1
1
0
C616
! С помощью операции «исключающее ИЛИ» можно
инвертировать биты, для которых маска равна 1!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
33. Битовые логические операции (итог)
Компьютерная арифметика, 10 класс33
Битовые логические операции (итог)
0
0
0
0
1
1
1
1
7
6
5
4
3
2
1
0
1
0
0
1
R
1
1
1
1
F16
916
6
5
4
3
2
1
0
1
0
0
1
0
0
0
0
016
7
6
5
4
3
2
1
0
0
0
1
1
0
1
0
0
316
R = R and F916
2) включить лампочки 7 и 4
7
916
1) отключить лампочки 2 и 1, не
трогая остальные
R = R or 9016
3) изменить состояние
лампочек 5, 4 и 2
R = R xor 3416
416
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
34. Шифрование с помощью xor
Компьютерная арифметика, 10 класс34
Шифрование с помощью xor
Идея: (A xor B) xor B = A
! Операция «исключающее ИЛИ» обратима, то есть
ее повторное применение восстанавливает исходное
значение!
Текст: 2*2=4
Коды символов:
'2' = 3216 = 001100102
'*' = 2A16 = 001010102
'=' = 3D16 = 001111012
'4' = 3416 = 001101002
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
35. Шифрование с помощью xor
Компьютерная арифметика, 10 класс35
Шифрование с помощью xor
Маска: 23 = 1716 = 000101112
'2' 3216 xor 1716 = 2516 '%'
'*' 2A16 xor 1716 = 3D16 '='
'=' 3D16 xor 1716 = 2A16 '*'
'4' 3416 xor 1716 = 2316 '#'
Исходный текст: 2*2=4
Зашифрованный текст: %=%*#
Расшифровка:
'%' 2516 xor 1716 = 3216 '2'
'=' 3D16 xor 1716 = 2A16 '*'
'*' 2A16 xor 1716 = 3D16 '='
'#' 2316 xor 1716 = 3416 '4'
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
36. Логический сдвиг
Компьютерная арифметика, 10 класс36
Логический сдвиг
Влево:
бит
переноса
С
1
Вправо:
1 0 0 1 1 0 1 1
0 0 1 1 0 1 1 0
1 0 0 1 1 0 1 1
0
Си:
N = N << 1;
N = N >> 1;
0 1 0 0 1 1 0 1
Паскаль:
0
С
1
shift left
N := N shl 1;
N := N shr 1;
shift right
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
37. Логический сдвиг
Компьютерная арифметика, 10 класс37
Логический сдвиг
Влево:
0 0 0 0 1 1 0 0
0 0 0 1 1 0 0 0
12
24
0 0 0 0 1 1 0 0
0 0 0 0 0 1 1 0
12
6
Вправо:
? Если число нечётное?
Логический сдвиг влево (вправо) – это быстрый
способ умножения (деления без остатка)
положительного числа на 2.
? Если число отрицательное?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
38. Арифметический сдвиг (вправо)
Компьютерная арифметика, 10 класс38
Арифметический сдвиг (вправо)
–12 1 1 1 1 0 1 0 0
–6
1 1 1 1 1 0 1 0
С
0
? Если число нечётное?
Примеры:
20 10
15 7
–20 –10
–15 –8
11 5
3 1
–11 –6
–3 –2
1 0
–1 –1
К.Ю. Поляков, Е.А. Ерёмин, 2013
Арифметический сдвиг
вправо – деление на 2
нацело с округлением
«вниз» (к ближайшему
меньшему целому).
http://kpolyakov.spb.ru
39. Циклический сдвиг
Компьютерная арифметика, 10 класс39
Циклический сдвиг
Влево:
1 0 0 1 1 0 1 1
0 0 1 1 0 1 1 1
Вправо:
1 0 0 1 1 0 1 1
1 1 0 0 1 1 0 1
! Циклический сдвиг предназначен для
последовательного просмотра битов без
потери данных.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
40. Пример
Компьютерная арифметика, 10 класс43
Задачи
1. Напишите логическую операцию и маску (в
шестнадцатеричной системе счисления), которые
нужно применить, чтобы ОБНУЛИТЬ указанные
биты 16-битного целого числа (биты нумеруются
справа налево, начиная с 0)
{2, 4, 8}
Операция И с маской FEEB
{8, 0, 7}
Операция И с маской FE7E
Д/р. {0, 9, 8}
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
41. Пример
Компьютерная арифметика, 10 класс44
Задачи
2. Напишите логическую операцию и маску (в
шестнадцатеричной системе счисления), которые
нужно применить, чтобы УСТАНОВИТЬ указанные
биты 16-битного целого числа.
{9, 7, 3}
Операция ИЛИ с маской 288
{1, 9, 3}
Операция ИЛИ с маской 20А
Д/р.
{6, 5, 3}
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
42. Пример
Компьютерная арифметика, 10 класс45
Задачи
3. Выполните логическую операцию «исключающее
ИЛИ» между заданными числами и запишите в ответе
полученное число в шестнадцатеричной системе
счисления.
0x87 xor 0x53
D4
0xE4 xor 0x3A
DE
Д/р.
0x78 xor 0x8D
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
43. Задачи
Компьютерная арифметика, 10 класс46
Задачи
4. Число записано в указанных битах 16-битного целого
числа, хранящегося в переменной N. Какие операции
нужно выполнить, чтобы записать это число в
переменную X? Маски для выполнения логических
операций записывайте в шестнадцатеричной системе
счисления.
биты с 3 по 4
(N and 0x18) shr 3
(N shr 3) and 0x3
биты с 4 по 5
(N and 0x30) shr 4
(N shr 4) and 0x3
Д/р.
биты с 1 по 3
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
44. Задачи
Компьютерная арифметика, 10 класс47
Задачи
1. Напишите логическую операцию и маску (в
шестнадцатеричной системе счисления), которые
нужно применить, чтобы ОБНУЛИТЬ указанные
биты 16-битного целого числа (биты нумеруются
справа налево, начиная с 0)
{1, 8, 0}
Операция И с маской FEFC
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
45. Задачи
Компьютерная арифметика, 10 класс48
Задачи
2. Напишите логическую операцию и маску (в
шестнадцатеричной системе счисления), которые
нужно применить, чтобы УСТАНОВИТЬ указанные
биты 16-битного целого числа.
{6, 7, 9}
Операция ИЛИ с маской 2C0
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
46. Задачи
Компьютерная арифметика, 10 класс49
Задачи
3. Выполните логическую операцию «исключающее
ИЛИ» между заданными числами и запишите в ответе
полученное число в шестнадцатеричной системе
счисления.
0x1D xor 0x66
К.Ю. Поляков, Е.А. Ерёмин, 2013
7B
http://kpolyakov.spb.ru
47. Задачи
Компьютерная арифметика, 10 класс50
Задачи
4. Число записано в указанных битах 16-битного целого
числа, хранящегося в переменной N. Какие операции
нужно выполнить, чтобы записать это число в
переменную X? Маски для выполнения логических
операций записывайте в шестнадцатеричной системе
счисления.
биты с 10 по 14
(N and 0x7C00) shr 10
(N shr 10) and 0x1F
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
48. Задачи
51Компьютерная
арифметика
§ 29. Хранение в памяти
вещественных чисел
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
49. Задачи
Компьютерная арифметика, 10 класс52
Хранение вещественных чисел
С фиксированной запятой (в первых ЭВМ):
целая часть
дробная часть
0,000000000000012345
123450000000000000,0
для больших и маленьких чисел нужно
масштабирование
С плавающей запятой (автоматическое масштабирование):
A Z B
знак
P
1,2345·10-14
1,2345·1017
порядок P
значащая часть Z
положение
запятой
цифры числа
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
50. Задачи
Компьютерная арифметика, 10 класс53
Хранение вещественных чисел
Теоретически оптимальный вариант (целая часть = 0):
0,0012345 = 0,12345·10-2
12,345 = 0,12345·102
всегда 0
один разряд расходуется впустую!
X 10
основание системы
счисления
Экономный вариант (целая часть от 1 до B):
0,0012345 = 1,2345·10-3
X 10
12,345 = 1,2345·101
повышение точности при конечном числе разрядов
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
51. Компьютерная арифметика
Компьютерная арифметика, 10 класс54
Нормализация
Нормализованная форма: значащая часть Z
удовлетворяет условию 1 ≤ Z < B, где B – основание
системы счисления (стандарт IEEE 754).
Пример:
17,25 = 10001,012 = 1,0001012·24
5,375 =
7,625 =
всегда 1, её можно
27,875 =
не хранить в памяти!
13,5 =
0,125 =
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
52. Хранение вещественных чисел
Компьютерная арифметика, 10 класс55
Число обычной точности (single)
знак
порядок
значащая часть
-17,25 = -10001,012 = -1,0001012·24
single: 4 байта = 32 бита
31 30
23 22
0
1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
знак порядок со
мантисса = дробная часть Z
смещением
p = 4 + 127 = 131 = 100000112
для single
1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
С
1
8
К.Ю. Поляков, Е.А. Ерёмин, 2013
A
0
0
0
0
http://kpolyakov.spb.ru
53. Хранение вещественных чисел
Компьютерная арифметика, 10 класс56
Задачи
1. Запишите приведенное в задании целое число
в 32-битную ячейку памяти.
3130
23 22
0
-88.625
1.10000101.01100010100000000000000
-42.5
1.10000100.01010100000000000000000
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
54. Нормализация
Компьютерная арифметика, 10 класс57
Диапазон вещественных чисел
тип
диапазон
single
double
1,4·10-45 – 3,4·1038
4,9·10-324 – 1,8·10308
extended
3,6·10-4951 – 1,2·104932
число
размер
десятичных
(байт)
значащих цифр
7-8
4
15-16
8
19-20
10
Extended – тип для вычислений в сопроцессоре, единица
в значащей части не скрывается.
Single, double – только для хранения.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
55. Число обычной точности (single)
Компьютерная арифметика, 10 класс58
Домашняя работа
1. Запишите приведенное в задании целое число
в 32-битную ячейку памяти.
3130
23 22
0
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
-66.75
-54.875
-93.625
56. Задачи
59Компьютерная
арифметика
§ 30. Операции с вещественными
числами
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
57. Диапазон вещественных чисел
Компьютерная арифметика, 10 класс60
Сложение и вычитание
! Как сложить два числа с плавающей запятой?
1,2345·10 – 5 + 1,2345·105 = ?
Пример:
7,25 = 111,012 = 1,11012·22
1,75 = 1,112 = 1,112·20
1) порядки выравниваются до большего
1,75 = 0,01112·22
2) значащие части складываются (или вычитаются)
1,11012
+ 0,0111
2
Почему порядки
10,01002
выравнивают до
3) результат нормализуется
большего?
2
3
10,012·2 = 1,0012·2
?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
58. Домашняя работа
Компьютерная арифметика, 10 класс61
Умножение и деление
! Как умножить два числа с плавающей запятой?
1,2345·10 – 5 · 1,2345·105 = ?
Пример:
1,75 = 1,112 = 1,112·20
6 = 1102 = 1,12·22
? Надо ли выравнивать
порядки?
1) значащие части умножаются (или делятся)
1,112·1,12 = 10,1012
2) порядки складываются (или вычитаются)
0+2=2
3) результат нормализуется
10,1012·22 = 1,01012·23
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
59. Компьютерная арифметика
Компьютерная арифметика, 10 класс62
Задачи
1. Покажите все этапы выполнения операции сложения для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните приведение к одинаковому порядку
выполните сложение
выполните нормализацию результата
переведите результат в десятичную систему счисления
7.875 + 18.375
Решение:
7.875 + 18.375 = 111.111 + 10010.011 =
4
4
4
= 0.0111111 + 1.0010011 = 1.101001 =
= 11010.01 = 26.25
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
60. Сложение и вычитание
Компьютерная арифметика, 10 класс63
Задачи
2. Покажите все этапы выполнения операции вычитания для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните приведение к одинаковому порядку
выполните вычитание
выполните нормализацию результата
переведите результат в десятичную систему счисления
17.375 - 15.5
Решение:
17.375 - 15.5 = 10001.011 - 1111.1 =
4
4
4
= 1.0001011 - 0.11111 = 0.0001111 = 1.111 = 1.875
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
61. Умножение и деление
Компьютерная арифметика, 10 класс64
Задачи
3. Покажите все этапы выполнения операции умножения для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните умножение
выполните нормализацию результата
переведите результат в десятичную систему счисления
8.125 * 5
Решение:
8.125 * 5 = 1000.001 * 101.0 = 1.0000013 * 1.0102
= 1.010001015 = 101000.101 = 40.625
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
62. Задачи
Компьютерная арифметика, 10 класс65
Задачи
4. Покажите все этапы выполнения операции деления для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните деление
выполните нормализацию результата
переведите результат в десятичную систему счисления
91.25 / 10
Решение:
91.25 / 10 = 1011011.01 / 1010.0 = 1.011011016 / 1.01003
= 1.0010013 = 1001.001 = 9.125
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
63. Задачи
Компьютерная арифметика, 10 класс66
Домашняя работа
1. Покажите все этапы выполнения операции сложения для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните приведение к одинаковому порядку
выполните сложение
выполните нормализацию результата
переведите результат в десятичную систему счисления
9.25 + 15.875
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
64. Задачи
Компьютерная арифметика, 10 класс67
Домашняя работа
2. Покажите все этапы выполнения операции вычитания для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните приведение к одинаковому порядку
выполните вычитание
выполните нормализацию результата
переведите результат в десятичную систему счисления
9.25 - 14.375
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
65. Задачи
Компьютерная арифметика, 10 класс68
Задачи
3. Покажите все этапы выполнения операции умножения для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните умножение
выполните нормализацию результата
переведите результат в десятичную систему счисления
7.375 * 10
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
66. Домашняя работа
Компьютерная арифметика, 10 класс69
Задачи
4. Покажите все этапы выполнения операции деления для
приведенных чисел:
переведите слагаемые в двоичный код,
выполните нормализацию
выполните деление
выполните нормализацию результата
переведите результат в десятичную систему счисления
90.75 / 6
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
67. Домашняя работа
Компьютерная арифметика, 10 класс70
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
[email protected]
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной
дидактики и ИТО ПГГПУ, г. Пермь
[email protected]
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
68. Задачи
Компьютерная арифметика, 10 класс71
Источники иллюстраций
1.
авторские материалы
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru