139.53K
Категория: ПрограммированиеПрограммирование

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

1.

2.

2
Компьютерная
арифметика
§ 25. Хранение в памяти
целых чисел
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

3.

Компьютерная арифметика, 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’
3
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
биты

4.

Компьютерная арифметика, 10 класс
4
Целые числа без знака
X 10
0
1

127
128

255
X 16
0016
0116

7F16
8016

FF16

0111 11112
1000 00002

1111 11112
X 2 0000 00002 0000 00012
0 FF
+
1111 1111
0000 0001
16
255
1 0000 0000
4016
64
192
C016
128
8016
0
64
128
192
255
016
4016
8016
C016
FF16
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

5.

Компьютерная арифметика, 10 класс
5
Целые числа без знака: диапазон
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
К.Ю. Поляков, Е.А. Ерёмин, 2018
типы данных
byte (Паскаль)
unsigned char (С++)
word (Паскаль)
unsigned short
(С++)
cardinal (Delphi)
unsigned int (С++)
Unsigned long
(Си++)
http://kpolyakov.spb.ru

6.

Компьютерная арифметика, 10 класс
6
Целые числа со знаком
? Сколько места требуется для хранения знака?
Старший (знаковый) бит числа определяет его знак.
Если он равен 0, число положительное, если 1, то
отрицательное.
Прямой код:
≥0
78 = 10011102
0
1
0
0
1
1
1
0
– 78 = –10011102
1
1
0
0
1
1
1
0
<0
операции с положительными и отрицательными
числами выполняются по-разному!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

7.

Компьютерная арифметика, 10 класс
7
Целые числа со знаком
Идея: «– 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).
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

8.

Компьютерная арифметика, 10 класс
8
Как построить дополнительный код?
Алгоритм А0: перевести число 2K – X в двоичную
систему счисления.
для вычислений требуется K+1 разряд
Алгоритм А1:
1) перевести число X в двоичную систему счисления;
2) построить обратный код, выполнив инверсию всех
битов (заменить 0 на 1 и наоборот);
3) к результату добавить 1.
78 = 010011102
10110001 инверсия
-78 10110010 +1
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

9.

Компьютерная арифметика, 10 класс
9
Как построить дополнительный код?
Алгоритм А2:
1) перевести число X-1 в двоичную систему счисления;
2) выполнить инверсию всех битов.
78 - 1 = 77 = 010011012
-78 10110010 инверсия
Алгоритм А3:
1) перевести число X в двоичную систему счисления;
2) выполнить инверсию всех старших битов числа,
кроме младшей единицы и нулей после нее.
78 = 010011102
-78 10110010 инверсия
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

10.

Компьютерная арифметика, 10 класс
10
Целые числа со знаком
X 10
–128
–127

–1
0

127
X 16
8016
8116

FF16
0016

7F16
X2
1000 00002
1000 00012

1111 11112
0000 00002

0111 11112
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
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

11.

Компьютерная арифметика, 10 класс
11
Целые числа 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
К.Ю. Поляков, Е.А. Ерёмин, 2018
K 1
1
типы данных
shortInt (Delphi)
char (С++)
smallInt (Delphi)
short (С++)
integer (Delphi)
int (С++)
int64 (Delphi)
long (С++)
http://kpolyakov.spb.ru

12.

Компьютерная арифметика, 10 класс
12
Представление целых чисел
Старший (знаковый) бит числа определяет его знак.
Если он равен 0, число положительное, если 1, то
отрицательное.
7
6
5
4
3
2
1
0
Положительные числа
Отрицательные числа
ПРЯМОЙ КОД
ДОПОЛНИТЕЛЬНЫЙ КОД
Алгоритм А3:
1) перевести число X в двоичную систему счисления;
2) выполнить инверсию всех старших битов числа,
кроме младшей единицы и нулей после нее.
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

13.

Компьютерная арифметика, 10 класс
13
Задание
1. Запишите машинные коды целых десятичных чисел в 16-ти
разрядной сетке.
В
ответе укажите
счисления.
-256;
представление
344;
числа
-172;
16-ой
128
2. Запишите числа по их 16-ому коду.
649C;
К.Ю. Поляков, Е.А. Ерёмин, 2018
F0A3;
9D8C;
5AC0
http://kpolyakov.spb.ru
системе

14.

14
Компьютерная
арифметика
§ 26. Операции с целыми
числами
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

15.

Компьютерная арифметика, 10 класс
15
Сложение и вычитание
! Операции с положительными и отрицательными
числами выполняются по одинаковым алгоритмам!
+ 5
-9
-4
+ 0000 0101
1111 0111
1111 1100
! Вычитание = сложение с дополнительным кодом
вычитаемого!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

16.

Компьютерная арифметика, 10 класс
16
Переполнение
дополнительный
бит
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’,
произошло переполнение и результат неверный.
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

17.

Компьютерная арифметика, 10 класс
17
Найдите значение выражения A+B, A-B, B-A
1. В 8-ми разрядной сетке
a. A = 120, B = 66
b. A = 34, B = 84
c.
A = 80, B = -12
d. A = -56, B = 44
2. В 16-ти разрядной сетке
a. A = 649C, B = 1BD5
b. A = F0A3, B = AB37
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

18.

Компьютерная арифметика, 10 класс
18
Умножение
× 00001001
9
5
00000101
00001001
+ 00000000
00001001
0000101101 45
× 11110111
-9
5
00000101
11110111
+ 00000000
11110111
10011010011 -45
! Умножение выполняется с помощью сложения и
сдвига.
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
English     Русский Правила