Компьютерная арифметика
Компьютерная арифметика
Предельные значения чисел
Предельные значения чисел
Вещественные числа
Неточность представления
Сравнение вещественных чисел
Дискретность
Компьютерная арифметика
Целые числа без знака (unsigned)
Целые числа без знака
Целые числа без знака: диапазон
Целые числа со знаком
Целые числа со знаком
Как построить дополнительный код?
Как построить дополнительный код?
Целые числа со знаком
Целые числа co знаком: диапазон
Задачи
Домашнее задание
Компьютерная арифметика
Сложение и вычитание
Переполнение
Задачи
Задачи
Домашнее задание
Домашнее задание
Умножение
Поразрядные логические операции
Логическая операция «И» (and, &)
Логическая операция «ИЛИ» (or, |)
Операция «исключающее ИЛИ» (xor, ^)
Битовые логические операции (итог)
Шифрование с помощью xor
Шифрование с помощью xor
Логический сдвиг
Логический сдвиг
Арифметический сдвиг (вправо)
Циклический сдвиг
Пример
Пример
Пример
Задачи
Задачи
Задачи
Задачи
Задачи
Задачи
Задачи
Задачи
Компьютерная арифметика
Хранение вещественных чисел
Хранение вещественных чисел
Нормализация
Число обычной точности (single)
Задачи
Диапазон вещественных чисел
Домашняя работа
Компьютерная арифметика
Сложение и вычитание
Умножение и деление
Задачи
Задачи
Задачи
Задачи
Домашняя работа
Домашняя работа
Задачи
3.68M
Category: programmingprogramming

Компьютерная арифметика

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
English     Русский Rules