- •Тема 1. Общие понятия об информации и информатике.
- •Тема 2. Арифметические основы эвм.
- •Тема 3. Логические основы эвм.
- •Тема 1. Основные понятия. Элементы языка Pascal.
- •Типы данных в Pascal.
- •Операции и выражения.
- •Стандартные функции.
- •Ввод и вывод на экран.
- •Оператор присваивания.
- •Тема 2. Операторы Pascal.
- •Сложные условия.
- •Оператор выбора.
- •Операторы цикла for.
- •Оператор цикла while.
- •Оператор цикла repeat.
- •Вложенные циклы.
- •Прочие операторы Pascal.
- •Тема 3. Общая структура программ на Pascal.
- •Тема 4. Массивы. Одномерные массивы.
- •Сортировка массивов и поиск элементов в массиве.
- •Многомерные массивы.
- •Тема 5. Функции и процедуры. Описание функций.
- •Обращение к функции.
- •Процедуры.
- •Заголовок процедуры.
- •Параметры-значения и параметры-переменные.
- •Локальные и глобальные переменные.
- •Рекурсия.
- •Тема 4. Основы устройства эвм.
- •Тема 5. Устройство эвм совместимой с ibm pc.
- •Тема 6. Программные средства эвм.
- •Тема 7. Основные свойства ос семейства Windows.
- •Приложения Winl6
- •Раздел 2. Программирование на языке Pascal.
Тема 2. Арифметические основы эвм.
Под системой счисления понимается способ обозначения чисел. Знаки, используемые для записи чисел, называются цифры. Системы счисления, в которых значение каждой цифры зависит от ее позиции в числе, называют позиционные.
С записью числа
,
где xn,
xn-1…
десятичные цифры, в десятичной системе,
интерпретируется, как
.
Для получения дробной части используются
отрицательные степени 10. Аналогично
десятичной системы вводятся системы
счисления с другим основанием. Запись
целого числа
,
где xn,
xn-1…
цифры в системе счисления с основанием
S интерпретируются как
.
Рассмотрим восьмеричную, шестнадцатеричную, двоичную системы счисления.
1. Восьмеричная система счисления
содержит цифры от 0 до 7. Целое число в
этой системе интерпретируется, как
.
Для того чтобы привести число из
восьмеричной системы, необходимо
воспользоваться приведенной выше
формулой. Например:
Переход из десятичной в восьмеричную систему счисления осуществляется на основе представления целого числа в виде:
Например, нужно перевести:
Преобразование десятичного числа в форме указанной выше осуществляется последовательным делением исходного числа на 8 до тех пор пока знак деления не будет меньше 8. Полученные в результате остатки, записанные в обратную сторону, дадут результат.
Для перевода дробных чисел без целой части используется представление в виде:
Другими словами необходимо исходное дробное число умножить на 8. Целая часть произведения даст крайнюю левую цифру, дробную часть произведения снова умножить на 8. Продолжать до тех пор, пока не останется дробной части, либо не будет достигнут необходимый размер числа.
2. Шестнадцатеричная система счисления содержит цифры от 0 до 9, A, B,C, D, E, F. Число в этой системе интерпретируется как:
Перевод из шестнадцатеричной в десятичную систему счисления осуществляется аналогично восьмеричной, то есть вместо 8 используем 16. Например:
Если необходимо осуществит перевод из десятичной системы счисления в любую другую дробного числа, действия для целой и дробной части выполняются отдельно:
3. Двоичная система используется для представления чисел внутри ЭВМ. В ней числа представляются с помощью двух цифр – 0 и 1. Число в двоичной системе трактуется как
Все переводы из десятичной системы счисления в двоичную и обратно осуществляются подобно вышерассмотренному. Соответствие чисел в двоичной, восьмеричной, десятичной, шестнадцатеричной систем счисления:
16 |
8 |
10 |
2 |
0 |
0 |
0 |
0000 |
1 |
1 |
1 |
0001 |
2 |
2 |
2 |
0010 |
3 |
3 |
3 |
0011 |
4 |
4 |
4 |
0100 |
5 |
5 |
5 |
0101 |
6 |
6 |
6 |
0110 |
7 |
7 |
7 |
0111 |
8 |
10 |
8 |
1000 |
9 |
11 |
9 |
1001 |
A |
12 |
10 |
1010 |
B |
13 |
11 |
1011 |
C |
14 |
12 |
1100 |
D |
15 |
13 |
1101 |
E |
16 |
14 |
1110 |
F |
17 |
15 |
1111 |
Для перевода числа из восьмеричной в двоичную систему счисления необходимо каждую цифру восьмеричного числа представить двоичным триплетом:
Перевод из шестнадцатеричной в двоичную осуществляется аналогично с заменой шестнадцатеричной цифры четырьмя двоичными разрядами:
Обратные преобразования осуществляются заменой трех (четырех) разрядов двоичного числа восьмеричной (шестнадцатеричной) цифрой. Замена производится начиная с младших разрядов. При необходимости слева добавляется незначащие нули:
Арифметические операции, во всех рассмотренных системах, производятся аналогично десятичной системе счисления. При вычислении необходимо помнить максимальную цифру данной системы счисления. Например для двоичной сложение:
0 + 0 = 0 0 * 0 = 0
0 + 1 = 1 0 * 1 = 0
1 + 0 = 1 1 * 0 = 0
1 + 1 = 10 1 * 1 = 1
1011101110011 1101
+ 101011001 * 110
1
100011001100
0000
+ 1101
1101
1001110
111000010011010
-
1011001
11100001000001
Причина, по которой ЭВМ работает на основе двоичной системы, заключается в том, что она наиболее простая и реализация простых блоков ЭВМ получается проще, чем при какой либо другой.
Ячейки памяти ЭВМ состоят из ряда элементов, которые могут находиться в одном из двух устойчивых состояний и переходить из одного в другое под влиянием внешнего воздействия. Количество элементов ячейки определяет длину числа, хранимого в памяти, и называется разрядностью. Арифметико-логическое устройство, при использовании двоичной системы, также получается самым простым. Прямое вычитание при реализации ЭВМ неудобно из-за необходимости занимать в старших разрядах и необходимости представления отрицательных чисел, поскольку в ЭВМ не существует никаких символов, кроме 0 и 1. Эти цифры используются для обозначения знака числа. Принято, что для записи знака используется старший разряд числа. 0 – число положительное, 1 – число отрицательное. Такая запись называется прямым кодом. При этом необходимо оговорить число разрядов используемых для представления числа. Например, для числа отведено 4 разряда и 1 знаковый разряд.
2 |
10 |
0|000 |
0 |
0|001 |
1 |
0|010 |
2 |
0|011 |
3 |
0|100 |
4 |
0|101 |
5 |
0|110 |
6 |
0|111 |
7 |
1|000 |
0 |
1|001 |
-1 |
1|010 |
-2 |
1|011 |
-3 |
1|100 |
-4 |
1|101 |
-5 |
Неудобство прямого кода в том, что над знаковым разрядом нельзя выполнять арифметические операции по тем же правилам, что и над остальными. Это приводит к необходимости выполнять различные действия в зависимости от знаков и модулей чисел. Например, необходимо выполнить операцию a + b. Пусть a – положительное число, тогда, если b – также положительное необходимо выполнить процедуру суммирования. Если b – отрицательное и по модулю меньше a, то процедура вычитания a - |b|. Если b по модулю больше a, то выполнить операцию |b| - a и понять знак у разности. Таким образом, вместо одной операции сложения приходится выполнять различные операции, предварительно, определив какие именно. Чтобы избавится от этих неудобств, отрицательные числа представляют с помощью дополнительного кода, решив две задачи:
1. Проведение сложения одинаковым образом, независимо от положительности или отрицательности слагаемых.
2. Избавится от вычитания, как от отдельной операции, заменив ее переводом вычитаемого в дополнительный код и последующим сложением.
Отрицательное число n в дополнительном коде есть разность между некоторым N>|n| и |n|, то есть nдоп=N-|n|. Если нужно представить все числа из некоторого диапазона в качестве N выбирается круглое число 100…0, где число нулей равно максимальному числу разрядов, которые может иметь представляемое число. Хотя дополнительный код определяется через операцию вычитания, его можно получить не используя ее. Например, пусть диапазон чисел составляет от –49 до 49. В качестве N возьмем 100. Дополнительный код получается путем последовательного добавления к заданному числу, начиная с младших разрядов цифр таким образом, чтобы они дополняли имеющиеся цифры до нуля с учетом переноса. Например:
-23 // прямой код
77 // дополнительный код
100
Соответственно:
Прямой |
Дополнительный |
-1 |
99 |
-2 |
98 |
… |
… |
-49 |
51 |
Вычитание с использованием дополнительного кода реализуется путем замены вычитаемого на число в дополнительном коде и сложении его с уменьшаемым, то есть вместо m – n, осуществляется m + N – n + N = m + (N - n) – N = m + nдоп – N. Поскольку N = 100…0, то последнее вычитание N выполняется с отбрасыванием старшего разряда числа, если оно больше N. Пример:
Для двоичной системы счисления все описанное выше верно, однако, процедуру получения дополнительного кода можно упростить. Чтобы получить дополнительный код числа записанного в двоичном виде необходимо инвертировать все его разряд и к младшему прибавить единицу. Код получаемый в результате инвертирования разрядов числа, называется обратным. Например:
0101 – прямой код
1010 – обратный код
+ 1
1011 – дополнительный код
Пусть для представления двоичного числа отводится четыре разряда, старший – знаковый, тогда можно записать следующее соответствие:
2 |
10 |
0000 |
0 |
0001 |
1 |
0010 |
2 |
0011 |
3 |
0100 |
4 |
0101 |
5 |
0110 |
6 |
0111 |
7 |
1000 |
-8 |
1001 |
-7 |
1010 |
-6 |
1011 |
-5 |
1100 |
-4 |
1101 |
-3 |
1110 |
-2 |
1111 |
-1 |
Сложение выполняется одинаково над всеми разрядами, включая знаковый разряд. Если получается единица в пятом разряде, она отбрасывается:
В дополнительном коде можно представлять также и дробные числа, например: пусть отведено четыре разряда под числа, из них старший знаковый, а два младших под дробную часть:
00,00 |
0 |
00,01 |
0,25 |
00,10 |
0,5 |
00,11 |
0,75 |
01,00 |
1 |
01,01 |
1,25 |
01,10 |
1,5 |
01,11 |
1,75 |
10,00 |
-2 |
10,01 |
-1,75 |
10,10 |
-1,5 |
10,11 |
-1,25 |
11,00 |
-1 |
11,01 |
-0,75 |
11,10 |
-0,5 |
11,11 |
-0,25 |
При выполнении умножения в дополнительном
коде, числа перемножаются как положительные,
затем результат корректируется в
зависимости от знаков сомножителей.
Поскольку размер числа, предназначенного
для хранения памяти, фиксируется,
существует проблема переполнения, когда
результат по модулю получается больший,
чем выбранный диапазон представления
чисел в дополнительном коде (больше чем
),
в этом случае результат будет неверен.
Например:
Имеется два способа представления чисел в ЭВМ – с фиксированной и с плавающей точкой. Число с фиксированной точкой представляется следующим образом:
-
Знаковый разряд
Само число в дополнительном коде
Целая часть
.
Дробная часть
Чаще всего точка фиксируется, либо сразу за знаковым разрядом, либо за крайним правым. Пусть длина ячейки 16 разрядов. Для представления собственно числа будет отведено 15 разрядов, тогда максимальное целое положительное число имеет вид:
А максимально отрицательное число:
Целые числа из этого диапазона представляются точно и операции над ними, исключая деление, производятся точно, если результат не выходит за границы допустимого диапазона.
Действительные числа представляются приближенно при помощи чисел с плавающей точкой, при этом число разделяется на 2 поля – мантиссу и порядок.
Мантисса |
Порядок |
||
Знак мантиссы |
Разряды мантиссы |
Знак порядка |
Разряды порядка |
Любое число R может быть представлено в виде:
,
где r – мантисса (дробное
число со знаком по модулю меньше 1), p
– порядок, T – основание
числа.
Порядок и мантисса представляются в дополнительном коде, основание числа будем полагать T = 2. Таким образом число может быть представлено следующим образом:
При использовании четырех разрядов под мантиссу и четырех под порядок старший знаковый, получим:
знаковый разряд
Одно и тоже число может быть представлено различными мантиссами и порядками. Например:
Чтобы избежать такой неоднозначности на мантиссу накладывается условие:
Это представление называется нормализованным представлением, после выполнения операций сложения и умножения. При необходимости результат нормализуется. Сложение чисел с плавающей точкой производится следующим образом:
Сравниваются порядки слагаемых.
Если они разные, осуществляется де нормализация того числа чей порядок меньше, так, чтобы порядки стали равны.
Мантиссы чисел складываются.
При необходимости выполняется нормализация суммы. Например:
+
Поскольку порядки разные, увеличиваем
порядок второго числа:
,
затем складывается мантисса:
0101
+ 0010
0111
При умножении чисел с плавающей точкой, необходимо:
Перемножить мантиссы и округлить результат до имеющегося числа разрядов.
Сложить порядки.
При необходимости выполнить нормализацию произведения. Например:
+
Сдвигаем влево мантиссу и уменьшаем порядок
Точность представления чисел с плавающей
точкой зависит от количества разрядов
мантиссы, а диапазон представленных
чисел от количества разрядов порядка.
Типичная ситуация, когда из 32-х разрядной
ячейки 24 разряда (1 из них знаковый
разряд) под мантиссу и 8 (1 знаковый
разряд) под порядок, что позволяет
представлять число по модулю от
.
