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

Содержание

Слайд 2

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

§ 24. Особенности представления чисел в компьютере

Компьютерная арифметика § 24. Особенности представления чисел в компьютере

Слайд 3

Предельные значения чисел

В математике нет предельных значений!
В компьютере – конечное число деталей,

Предельные значения чисел В математике нет предельных значений! В компьютере – конечное
ограниченное количество разрядов.

10000?

Слайд 4

Предельные значения чисел

система счисления с основанием B

K разрядов

Переполнение разрядной сетки — это

Предельные значения чисел система счисления с основанием B K разрядов Переполнение разрядной
ситуация, когда число, которое требуется сохранить, не умещается в имеющемся количестве разрядов вычислительного устройства.

Слайд 5

Вещественные числа

система счисления с основанием B

F разрядов в дробной части

Вещественные числа система счисления с основанием B F разрядов в дробной части

Слайд 6

Неточность представления

0,1234567

1,3211
1,3212
1,3214

Неточность представления 0,1234567 1,3211 1,3212 1,3214

Слайд 7

Сравнение вещественных чисел

хранится неточно!

неточный результат!

допустимая погрешность (10-6)

Сравнение вещественных чисел хранится неточно! неточный результат! допустимая погрешность (10-6)

Слайд 8

Дискретность

Целые числа дискретны.
Вещественные числа непрерывны.
Компьютер работает только с дискретными данными.
При дискретизации может

Дискретность Целые числа дискретны. Вещественные числа непрерывны. Компьютер работает только с дискретными
происходить потеря информации (искажение данных).
Большинство трудностей связано с кодированием вещественных чисел.

Слайд 9

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

§ 25. Хранение в памяти целых чисел

Компьютерная арифметика § 25. Хранение в памяти целых чисел

Слайд 10

Целые числа без знака (unsigned)

78 = 10011102

Беззнаковые данные – не могут быть

Целые числа без знака (unsigned) 78 = 10011102 Беззнаковые данные – не
отрицательными.

биты

младший

старший

старший полубайт
старшая цифра

младший полубайт
младшая цифра

416

E16

10011102 = 4E16 = ‘N’

Слайд 11

Целые числа без знака

1111 1111
+ 0000 0001

1 0000 0000

Целые числа без знака 1111 1111 + 0000 0001 1 0000 0000

Слайд 12

Целые числа без знака: диапазон

Целые числа без знака: диапазон

Слайд 13

Целые числа со знаком

Старший (знаковый) бит числа определяет его знак. Если он

Целые числа со знаком Старший (знаковый) бит числа определяет его знак. Если
равен 0, число положительное, если 1, то отрицательное.

Прямой код:

78 = 10011102

– 78 = –10011102

≥ 0

< 0

операции с положительными и отрицательными числами выполняются по-разному!

Слайд 14

Целые числа со знаком

Идея: «– 1» должно быть представлено так, чтобы при

Целые числа со знаком Идея: «– 1» должно быть представлено так, чтобы
сложении с числом «1» получить 0.

1111 1111
+ 0000 0001

1 0000 0000

-1 → 255
1
256

Для 8-битных чисел: код числа «–X» равен двоичному коду числа 256 – X (дополнение до 256).

Слайд 15

Как построить дополнительный код?

Алгоритм А0: перевести число 2K – X в двоичную

Как построить дополнительный код? Алгоритм А0: перевести число 2K – X в
систему счисления.

для вычислений требуется K+1 разряд

Алгоритм А1:
перевести число X в двоичную систему счисления;
построить обратный код, выполнив инверсию всех битов (заменить 0 на 1 и наоборот);
к результату добавить 1.

78 = 010011102

10110001

-78 → 10110010

← инверсия

+1

Слайд 16

Как построить дополнительный код?

Алгоритм А2:
перевести число X-1 в двоичную систему счисления;
выполнить

Как построить дополнительный код? Алгоритм А2: перевести число X-1 в двоичную систему
инверсию всех битов.

78 - 1 = 77 = 010011012

← инверсия

Алгоритм А3:
перевести число X в двоичную систему счисления;
выполнить инверсию всех старших битов числа, кроме младшей единицы и нулей после нее.

78 = 010011102

-78 → 10110010

-78 → 10110010

← инверсия

Слайд 17

Целые числа со знаком

Целые числа со знаком

Слайд 18

Целые числа co знаком: диапазон

Целые числа co знаком: диапазон

Слайд 19

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

§ 26. Операции с целыми числами

Компьютерная арифметика § 26. Операции с целыми числами

Слайд 20

Сложение и вычитание

0000 0101

1111 0111

+

1111 1100

-4 ←

Сложение и вычитание 0000 0101 1111 0111 + 1111 1100 -4 ←

Слайд 21

Переполнение

знаковый бит

дополнительный бит

00100001

01100000

+

010000001

96

33

-127

S’

S

0

0

1

0

11011111

10100000

+

101111111

-96

-33

127

S’

S

1

1

0

1

Переполнение знаковый бит дополнительный бит 00100001 01100000 + 010000001 96 33 -127

Слайд 22

Умножение

9
5

→45

00001001

×

00000101

00001001

00000000

00001001

0000101101

+

-9
5

→-45

11110111

×

00000101

11110111

00000000

11110111

10011010011

+

Умножение 9 5 →45 00001001 × 00000101 00001001 00000000 00001001 0000101101 +

Слайд 23

Поразрядные логические операции

Поразрядные операции выполняются с отдельными битами числа и не влияют

Поразрядные логические операции Поразрядные операции выполняются с отдельными битами числа и не
на остальные.

регистр

Операция «НЕ» (инверсия, not):

R

not R

Слайд 24

Логическая операция «И» (and, &)

данные

маска

Маска – константа, которая определяет область применения логической

Логическая операция «И» (and, &) данные маска Маска – константа, которая определяет
операции к битам многоразрядного числа.

D

D and M

M

AA16

6С16

2816

AA16 and 6C16 = ?

Слайд 25

Логическая операция «ИЛИ» (or, |)

D

D or M

M

AA16

6С16

EE16

AA16 or

Логическая операция «ИЛИ» (or, |) D D or M M AA16 6С16
6C16 = ?

Слайд 26

Операция «исключающее ИЛИ» (xor, ^)

D

D xor M

M

AA16

6С16

C616

AA16 xor

Операция «исключающее ИЛИ» (xor, ^) D D xor M M AA16 6С16
6C16 = ?

Слайд 27

Битовые логические операции (итог)

R

1) отключить лампочки 2 и 1, не трогая

Битовые логические операции (итог) R 1) отключить лампочки 2 и 1, не
остальные

R = R and F916

2) включить лампочки 7 и 4

R = R or 9016

3) изменить состояние лампочек 5, 4 и 2

R = R xor 3416

Слайд 28

Шифрование с помощью xor

Идея: (A xor B) xor B =

A

Текст: 2*2=4

Коды символов:

Шифрование с помощью xor Идея: (A xor B) xor B = A

'2' = 3216 = 001100102
'*' = 2A16 = 001010102
'=' = 3D16 = 001111012
'4' = 3416 = 001101002

Слайд 29

Шифрование с помощью xor

Исходный текст: 2*2=4

'2' → 3216 xor 1716 =
'*' →

Шифрование с помощью xor Исходный текст: 2*2=4 '2' → 3216 xor 1716
2A16 xor 1716 =
'=' → 3D16 xor 1716 =
'4' → 3416 xor 1716 =

2516 → '%'
3D16 → '='
2A16 → '*'
2316 → '#'

Маска: 23 = 1716 = 000101112

Зашифрованный текст: %=%*#

Расшифровка:

'%' → 2516 xor 1716 =
'=' → 3D16 xor 1716 =
'*' → 2A16 xor 1716 =
'#' → 2316 xor 1716 =

3216 → '2'
2A16 → '*'
3D16 → '='
3416 → '4'

Слайд 30

Логический сдвиг

Влево:

бит переноса

С

Вправо:

С

С, C++, Python:

Паскаль:

N = N << 1;
N = N >>

Логический сдвиг Влево: бит переноса С Вправо: С С, C++, Python: Паскаль:
1;

N := N shl 1;
N := N shr 1;

shift left

shift right

Слайд 31

Логический сдвиг

Влево:

12

24

Вправо:

12

6

Логический сдвиг влево (вправо) – это быстрый способ умножения (деления без

Логический сдвиг Влево: 12 24 Вправо: 12 6 Логический сдвиг влево (вправо)
остатка) положительного числа на 2.

Слайд 32

Арифметический сдвиг (вправо)

–12

С

– 6

Примеры:

20

15

11

3

1

→ 10

→ 7

→ 5

→ 1

→ 0

–20

–15

–11

–3

–1

→ –10

→ –8

→ –6

Арифметический сдвиг (вправо) –12 С – 6 Примеры: 20 15 11 3
–2

→ –1

Арифметический сдвиг вправо – деление на 2 нацело с округлением «вниз» (к ближайшему меньшему целому).

Слайд 33

Циклический сдвиг

Влево:

Вправо:

Циклический сдвиг Влево: Вправо:

Слайд 34

Пример

Задача: в целой переменной N (32 бита) закодирована информация о цвете пикселя

Пример Задача: в целой переменной N (32 бита) закодирована информация о цвете
в RGB:
Записать в переменные R, G, B составляющие цвета.
Вариант 1:
Обнулить все биты, кроме G. Маска для выделения G: 0000FF0016
Сдвинуть вправо так, чтобы число G передвинулось в младший байт.

С, C++, Python:

G =(N & 0xFF00) >> 8;

Паскаль:

G:=(N and $FF00) shr 8;

Слайд 35

Пример
Вариант 2:
Сдвинуть вправо так, чтобы число G передвинулось в младший байт.
Обнулить все

Пример Вариант 2: Сдвинуть вправо так, чтобы число G передвинулось в младший
биты, кроме G. Маска для выделения G: 000000FF16

С, C++, Python :

G =(N >> 8) & 0xFF;

Паскаль:

G:=(N shr 8) and $FF;

Слайд 36

Пример

С, C++, Python:

R =
B =

Паскаль:

R:=
B:=

Пример С, C++, Python: R = B = Паскаль: R:= B:=

Слайд 37

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

§ 27. Хранение в памяти вещественных чисел

Компьютерная арифметика § 27. Хранение в памяти вещественных чисел

Слайд 38

Хранение вещественных чисел

С фиксированной запятой (в первых ЭВМ):

для больших и маленьких чисел

Хранение вещественных чисел С фиксированной запятой (в первых ЭВМ): для больших и
нужно масштабирование

0,000000000000012345

123450000000000000,0

С плавающей запятой (автоматическое масштабирование):

положение
запятой

цифры числа

1,2345·10-14

1,2345·1017

Слайд 39

Хранение вещественных чисел

Теоретически оптимальный вариант (целая часть = 0):

0,0012345 = 0,12345·10-2

12,345 =

Хранение вещественных чисел Теоретически оптимальный вариант (целая часть = 0): 0,0012345 =
0,12345·102

всегда 0

один разряд расходуется впустую!

Экономный вариант (целая часть от 1 до B):

основание системы счисления

0,0012345 = 1,2345·10-3

12,345 = 1,2345·101

повышение точности при конечном числе разрядов

Слайд 40

Нормализация

Нормализованная форма: значащая часть Z удовлетворяет условию 1 ≤ Z < B,

Нормализация Нормализованная форма: значащая часть Z удовлетворяет условию 1 ≤ Z Пример:
где B – основание системы счисления (стандарт IEEE 754).

Пример:

17,25 = 10001,012 = 1,0001012·24

5,375 =

7,625 =

27,875 =

13,5 =

0,125 =

всегда 1, её можно не хранить в памяти!

Слайд 41

Число обычной точности (single)

-17,25 = -10001,012 = -1,0001012·24

single: 4 байта = 32

Число обычной точности (single) -17,25 = -10001,012 = -1,0001012·24 single: 4 байта
бита

мантисса = дробная часть Z

порядок со смещением

знак

p = 4 + 127 = 131 = 100000112

С

1

8

A

0

0

0

0

для single

Слайд 42

Диапазон вещественных чисел

Extended – тип для вычислений в сопроцессоре, единица в значащей

Диапазон вещественных чисел Extended – тип для вычислений в сопроцессоре, единица в
части не скрывается.

Single, double – только для хранения.

Слайд 43

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

§ 28. Операции с вещественными числами

Компьютерная арифметика § 28. Операции с вещественными числами

Слайд 44

Сложение и вычитание

порядки выравниваются до большего
значащие части складываются (или вычитаются)
результат нормализуется

1,2345·10 –

Сложение и вычитание порядки выравниваются до большего значащие части складываются (или вычитаются)
5 + 1,2345·105 = ?

Пример:

7,25 = 111,012 = 1,11012·22

1,75 = 1,112 = 1,112·20

1,75 = 0,01112·22

10,012·22 = 1,0012·23

Слайд 45

Умножение и деление

1,2345·10 – 5 · 1,2345·105 = ?

значащие части умножаются (или

Умножение и деление 1,2345·10 – 5 · 1,2345·105 = ? значащие части
делятся)
порядки складываются (или вычитаются)
результат нормализуется

Пример:

1,75 = 1,112 = 1,112·20

6 = 1102 = 1,12·22

1,112·1,12 = 10,1012

10,1012·22 = 1,01012·23

0 + 2 = 2

Слайд 46

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
[email protected]
ЕРЕМИН

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163,
Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
[email protected]
Имя файла: Компьютерная-арифметика.pptx
Количество просмотров: 44
Количество скачиваний: 0