2
Определения
Компьютер (computer) – это программируемое электронное устройство для обработки данных.
аналоговые компьютеры – складывают и умножают аналоговые (непрерывные) сигналы
цифровые компьютеры – работают с цифровыми (дискретными) данными.
Hardware – аппаратное обеспечение, «железо».
Software – программное обеспечение, «софт».
Программа – это последовательность команд, которые должен выполнить компьютер.
Команда – это описание операции:
код операции
операнды – исходные данные (числа) или их адреса
результат (куда записать).
3
Процессор
Регистр – ячейка быстродействующей оперативной памяти, расположенная внутри процессора.
Процессор – микросхема, которая обрабатывает информацию и управляет всеми устройствами компьютера.
АЛУ – арифметико-логическое устройство
УУ – устройство управления
4
Структура памяти
Память состоит из нумерованных ячеек.
Линейная структура (адрес ячейки – одно число).
Байт – это наименьшая ячейка памяти, имеющая собственный адрес (4, 6, 7, 8, 12 бит).
На современных компьютерах 1 байт = 8 бит.
0 | 1 | 2 | 3 | … |
Слово = 2 байта
Двойное слово = 4 байта
5
Архитектура компьютера
Архитектура – принципы действия и взаимосвязи основных устройств компьютера (процессора, ОЗУ, внешних устройств).
Принстонская архитектура (фон Неймана):
процессор
ОЗУ(программа и данные)
устройства вывода
устройства ввода
прямой доступ к памяти
Гарвардская архитектура – программы и данные хранятся в разных областях памяти.
прямой доступ к памяти
скорость (одновременно читаем команду и данные)
нужно больше контактов у процессора
6
Принципы фон Неймана
А. Беркс, Х. Голдстайн, Д. Нейман «Предварительный доклад о машине EDVAC» (1945)
Принцип двоичного кодирования: вся информация кодируется в двоичном виде.
Принцип программного управления: программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
Принцип однородности памяти: программы и данные хранятся в одной и той же памяти.
Принцип адресности: память состоит из пронумерованных ячеек; процессору в любой момент времени доступна любая ячейка.
7
Выполнение программы
Счетчик команд (IP = Instruction Pointer) – регистр, в котором хранится адрес следующей команды.
IP
Команда, расположенная по этому адресу, передается в УУ. Если это не команда перехода, регистр IP увеличивается на длину команды.
УУ расшифровывает адреса операндов.
Операнды загружаются в АЛУ.
УУ дает команду АЛУ на выполнение операции.
Результат записывается по нужному адресу.
Шаги 1-5 повторяются до получения команды «стоп».
AB3D16
по адресу AB3D16
8
Архитектуры компьютеров
фон Неймана
многомашинная(независимые задачи)
многопроцессорная(части одной задачи, по разным программам)
параллельные процессоры(части одной задачи, по одной программе)
10
Персональный компьютер (ПК)
ПК – это компьютер, предназначенный для личного использования (доступная цена, размеры, характеристики).
1977 Apple-II
1981 IBM PC
(personal computer)
ЕС-1841
11
Принцип открытой архитектуры (IBM)
на материнской плате расположены только узлы, которые обрабатывают информацию (процессор и вспомогательные микросхемы, память)
схемы, управляющие другими устройствами (монитором и т.д.) – это отдельные платы, которые вставляются в слоты расширения
схема стыковки новых устройств с компьютером общедоступна (стандарт)
конкуренция, удешевление устройств
производители могут изготавливать новые совместимые устройства
пользователь может собирать ПК «из кубиков»
12
Взаимосвязь блоков ПК
процессор
память
видеокарта
сетеваякарта
контроллерыдисководов
Шина – многожильная линия связи, доступ к которой имеют несколько устройств.
Контроллер – электронная схема, управляющая внешним устройством по сигналам процессора.
контроллеры
14
Целые беззнаковые числа
Беззнаковые данные – не могут быть отрицательными.
Байт (символ)
память: 1 байт = 8 бит
диапазон значений 0…255, 0…FF16 = 28 - 1
Си: unsigned char Паскаль: byte
0 | 1 | 0 | 1 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
биты
младший
старший
старший полубайт
старшая цифра
младший полубайт
младшая цифра
416
E16
10011102 = 4E16 = ‘N’
16
Целые беззнаковые числа
Целое без знака
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
биты
старший байт
младший байт
4D16
7A16
1001101011110102 = 4D7A16
Длинное целое без знака
17
«-1» – это такое число, которое при сложении с 1 даст 0.
1 байт: FF16 + 1 = 1 0 0 16
2 байта: FFFF16 + 1 = 1 0 0 0 0 16
4 байта: FFFFFFFF16 + 1 = 1 0 0 0 0 0 0 0 0 16
Целые числа со знаком
Старший (знаковый) бит числа определяет его знак. Если он равен 0, число положительное, если 1, то отрицательное.
не помещается в 1 байт!
-1
-1
18
Двоичный дополнительный код
Задача: представить отрицательное число (–a) в двоичном дополнительном коде.
Решение:
Перевести число a–1 в двоичную систему.
Записать результат в разрядную сетку с нужным числом разрядов.
Заменить все «0» на «1» и наоборот (инверсия).
Пример: (– a) = – 78, сетка 8 бит
a – 1 = 77 = 10011012
0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
= – 78
знаковый бит
21
Целые числа со знаком
Байт (символ) со знаком
0 | 1 |
1 | 0 |
можно работать с отрицательными числами
уменьшился диапазон положительных чисел
127
– 128
22
Целые числа со знаком
Слово со знаком
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
23
Ошибки
Переполнение разрядной сетки: в результате сложения больших положительных чисел получается отрицательное (перенос в знаковый бит).
0 | 1 | 0 |
0 | 1 | 0 |
+
64
64
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 0 |
– 128
24
Ошибки
Перенос: при сложении больших (по модулю) отрицательных чисел получается положительное (перенос за границы разрядной сетки).
1 | 0 |
1 | 0 |
+
– 128
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 |
0
– 128
1
в специальный бит переноса
26
Инверсия (операция НЕ)
Инверсия – это замена всех «0» на «1» и наоборот.
0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
Си:
Паскаль:
int n;
n = ~n;
var n: integer;
n := not n;
27
Операция И
Обозначения: И, , & (Си), and (Паскаль)
0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
&
маска
5B16 & CC16 = 4816
A | B | A & B |
0 | ||
1 | 0 | |
1 | 0 | |
x & 0 =
x & 1 =
0
x
28
Операция И – обнуление битов
Маска: обнуляются все биты, которые в маске равны «0».
Задача: обнулить 1, 3 и 5 биты числа, оставив остальные без изменения.
1 | 0 | 1 | 0 | 1 | 0 | 1 |
маска
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
D16
516
Си:
Паскаль:
int n;
n = n & 0xD5;
var n: integer;
n := n and $D5;
29
Операция И – проверка битов
Задача: проверить, верно ли, что все биты 2…5 – нулевые.
0 | 1 | 0 |
маска
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
316
С16
Си:
Паскаль:
if ( n & 0x3C == 0 )
printf ("Биты 2-5 нулевые.");
else printf ("В битах 2-5 есть ненулевые.");
if (n and $3C) = 0
writeln ('Биты 2-5 нулевые.')
else writeln ('В битах 2-5 есть ненулевые.');
30
Операция ИЛИ
Обозначения: ИЛИ, , | (Си), or (Паскаль)
0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 0 | 1 |
ИЛИ
маска
5B16 | CC16 = DF16
A | B | A или B |
0 | ||
1 | ||
1 | 0 | 1 |
x ИЛИ 0 =
x ИЛИ 1 =
1
x
31
Операция ИЛИ – установка битов в 1
Задача: установить все биты 2…5 равными 1, не меняя остальные.
0 | 1 | 0 |
маска
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
316
С16
Си:
Паскаль:
n = n | 0x3C;
n := n or $3C;
32
Операция «исключающее ИЛИ»
A | B | A xor B |
0 | ||
1 | ||
1 | 0 | 1 |
0 |
Обозначения: , ^ (Си), xor (Паскаль)
0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 1 |
XOR
маска
5B16 ^ CC16 = 9716
x XOR 0 =
x XOR 1 =
НЕ x
x
33
«Исключающее ИЛИ» – инверсия битов
Задача: выполнить инверсию для битов 2…5, не меняя остальные.
0 | 1 | 0 |
маска
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
316
С16
Си:
Паскаль:
n = n ^ 0x3C;
n := n xor $3C;
34
«Исключающее ИЛИ» – шифровка
(0 xor 0) xor 0 =
(1 xor 0) xor 0 =
0
1
(0 xor 1) xor 1 =
(1 xor 1) xor 1 =
0
1
(X xor Y) xor Y = X
код (шифр)
Шифровка: выполнить для каждого байта текста операцию XOR с байтом-шифром.
Расшифровка: сделать то же самое с тем же шифром.
35
Логический сдвиг
1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 |
1
Влево:
0
0
1 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 0 | 1 |
1
Вправо:
0
в бит
переноса
Си:
Паскаль:
n = n << 1;
n = n >> 1;
n := n shl 1;
n := n shr 1;
в бит
переноса
shift left
shift right
36
Логический сдвиг
Логический сдвиг влево (вправо) – это быстрый способ умножения (деления без остатка) на 2.
1011012
10110102
сдвиг влево
сдвиг вправо
45
90
38
Арифметический сдвиг
1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 |
1
Влево (= логическому):
0
0
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
0
Вправо (знаковый бит не меняется!):
Си:
Паскаль: –
n = -6;
n = n >> 1;
– 6
– 3
39
Пример
Задача: в целой переменной n (32 бита) закодирована информация о цвете пикселя в RGB:
Выделить в переменные R, G, B составляющие цвета.
Вариант 1:
Обнулить все биты, кроме G. Маска для выделения G: 0000FF0016
Сдвинуть вправо так, чтобы число G передвинулось в младший байт.
0 | R | G | B |
31 24 | 23 16 | 15 8 | 7 0 |
Си:
G = (n & 0xFF00) >> 8;
Паскаль:
G := (n and $FF00) shr 8;
40
Пример
0 | R | G | B |
31 24 | 23 16 | 15 8 | 7 0 |
Си:
G = (n >> 8) & 0xFF;
Паскаль:
G := (n shr 8) and $FF;
43
Перевод дробных чисел
10 2
2 10
0,375 =
2
101,0112
2 1 0 -1 -2 -3
разряды
= 1·22 + 1·20 + 1·2-2 + 1·2-3
= 4 + 1 + 0,25 + 0,125 = 5,375
,750
0
0,75
2
,50
1
0,5
2
,0
1
0,7 = ?
0,7 = 0,101100110…
= 0,1(0110)2
Многие дробные числа нельзя представить в виде конечных двоичных дробей.
Для их точного хранения требуется бесконечное число разрядов.
Большинство дробных чисел хранится в памяти с ошибкой.
0,0112
45
Нормализация двоичных чисел
X = s M 2e
s – знак (1 или -1)
M – мантисса,
e – порядок
M = 0 или 1 M < 2
15,625 =
1111,1012 =
11,1111012 23
знак
порядок
мантисса
3,375 =
Пример:
46
Нормализованные числа в памяти
IEEE Standard for Binary Floating-Point Arithmetic (IEEE 754)
15,625 = 11,1111012 23
s = 1 e = 3 M = 1,1111012
p | m |
Знаковый бит:
Порядок со сдвигом:
Дробная часть мантиссы:
m = M – 1
47
Нормализованные числа в памяти
Тип данных | Размер, байт | Мантисса, бит | Порядок, бит | Сдвиг порядка, | Диапазон модулей | Точность, десятичн. цифр |
float | 4 | 23 | 8 | 127 | 3,4·10-38… | 7 |
double | 8 | 52 | 11 | 1023 | 1,7·10-308… | 15 |
long double | 10 | 64 | 15 | 16383 | 3,4·10-4932… | 19 |
Типы данных для языков: Си
Паскаль
48
Вещественные числа в памяти
15,625 = 1,1111012 23
4 байта = 32 бита
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
p = e+127 = 130
=100000102
m = M – 1 = 0,1111012
3,375 =
49
Арифметические операции
сложение
Порядок выравнивается до большего
5,5 = 1,011222
3 = 1,12 21 = 0,112 22
Мантиссы складываются
1,0112 + 0,1102
10,0012
Результат нормализуется (с учетом порядка)
10,0012 22 = 1,00012 23 = 1000,12 = 8,5
5,5 + 3 = 101,12 + 112 = 8,5 = 1000,12
50
Арифметические операции
вычитание
Порядок выравнивается до большего
10,75 = 1,01011223
5,25 = 1,01012 22 = 0,101012 23
Мантиссы вычитаются
1,010112
– 0,101012
0,101102
Результат нормализуется (с учетом порядка)
0,10112 23 = 1,0112 22 = 101,12 = 5,5
10,75 – 5,25 = 1010,112 – 101,012 = 101,12 = 5,5
51
Арифметические операции
умножение
Мантиссы умножаются
7 = 1,112 22 1,1 12
3 = 1,12 21 1,12
1 1 12
1 1 12
1 0 ,1 0 12
Порядки складываются: 2 + 1 = 3
Результат нормализуется (с учетом порядка)
10,1012 23 = 1,01012 24 = 101012 = 21
7 3 = 1112 112 = 21 = 101012
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.