- •1. Двоичная система счисления.
- •2. Восьмеричная система счисления.
- •3. Шестнадцатеричная система счисления.
- •4. Сложение и вычитание в 2, 8 и 16 c/c.
- •2. Вещественные числа (числа с плавающей запятой).
- •3. Логические данные.
- •2. Зарезервированные слова.
- •X a8 alpha Massiv z52d9 eps Res_52_a ___75
- •6. Метка.
- •2. Целые типы данных.
- •4. Вещественные типы.
- •1. Раздел описания меток.
- •2. Раздел описания констант.
- •3. Раздел описания типов.
- •4. Раздел описания переменных.
- •6. Раздел операторов.
- •7. Последовательность разделов.
- •1. Формульно-словесный способ.
- •2. Блок-схемный способ.
- •Ввод - вывод одномерного массива
- •2. Ввод массива из текстового файла.
- •3. Вывод одномерного массива на экран.
- •Примеры обработки одномерных массивов
- •1. Параметр цикла должен быть ординального типа.
- •2. Параметр должен быть описан в том же блоке, где находится сам оператор цикла.
- •5. В теле цикла параметр не должен изменяться.
- •6. Начальное и конечное значения параметра цикла вычисляются только один раз, до начала цикла.
- •7. При нормальном завершении цикла значение его параметра считается неопределенным.
- •Контроль ординальных переменных
- •Вставка элемента в упорядоченный массив
- •Удаление элементов из массива
- •«Школьный» алгоритм сортировки
- •Группировка массива методом прямой выборки
- •Группировка массива методом прямого обмена
- •Var c : array[1..10,1..15,1..8] of real.
- •1. Ввод элементов матрицы с клавиатуры.
- •2. Ввод матрицы из текстового файла.
- •3. Вывод матрицы на экран.
- •Тождественные и совместимые типы
- •Обработка в процедуре одномерных массивов с различными именами типов
- •Обработка в процедуре матриц с различными именами типов
- •Var s : string[V],
- •Процедуры и функции для обработки строк
- •Определение битовой структуры поля памяти
- •Процедуры и функции для файлов любого типа
- •Var p : pointer;
- •1. Формирование стека из текстового файла.
- •7. Определение значения и местоположения максимального элемента в стеке.
- •8. Удаление из стека максимального элемента.
- •9. Добавление элемента в упорядоченный стек.
- •2. Добавление нового элемента в очередь.
- •3. Удаление элемента из очереди.
- •6. Удаление произвольного элемента из очереди.
- •7. Добавление нового элемента в произвольное место очереди.
- •1. Формирование дека.
- •Var sin : integer;
- •Процедура заполнения FillChar
- •Процедура перемещения данных move
- •Управление экраном в текстовом режиме
- •Сохранение и восстановление экрана
- •Interface
- •Implementation
- •Процедуры управления текстовым режимом экрана
- •Intr(n:byte; Var Reg:Registers),
- •If KeyPressed then
- •Автоматическая оптимизация программ
- •1. Свертывание констант.
- •2. Слияние констант.
- •3. Вычисление по короткой схеме.
- •4. Удаление неиспользуемого кода.
- •If false then
- •5. Эффективная компоновка.
- •Оверлейная структура программы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Использование сопроцессора
2. Восьмеричная система счисления.
Основанием системы является число 8. Для изображения произвольного числа используются 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7.
Перевод 8 10 :
35174, = 3 + 5 + 1 + 7 + 4 + 6 = 34096 + 5512 +
+164 + 78 + 4 + 6/8 = 12288 + 2560 + 64 + 56 + 4 + 3/4 = 14972,7 .
Пример 2. Перевод 10 8 . Схема перевода такая же, как и для 2 с/c.
397, = 615,1
397 8 0, 2 8
32 49 8 1, 6 8
77 48 6 4, 8 8
72 1 6, 4 8
5 3, 2 8
1, 6 8
…………
0, = 0,146314631… = 0,(1463
Полученная восьмеричная дробь числа (615,15) округлена до двух цифр.
Правило округления: чтобы округлить дробное число до цифр, нужно к (+1)-ой цифре добавить половину цены разряда для данной системы счисления, после чего отбросить все дробные цифры, начиная с -ой. Для 8 c/c половина цены разряда равна 4, для 2 с/c - 1, для 16 c/c - 8.
В рассмотренном выше примере имеем (для = 2):
0, 1 4 6 3 1 4 6 3
+ 4
0, 1 5 2 3 1 4 6 3
Примечание. Здесь сложение выполнено в восьмеричной системе счисления.
Перевод 8 2. Для перевода восьмеричного числа в 2 c/c нужно каждую восьмеричную цифру записать в виде двоичной триады, т.е. трех двоичных цифр.
Восьмеричное число |
Двоичное число |
Двоичная триада |
0 1 2 3 4 5 6 7 |
0 1 10 11 100 101 110 111 |
000 001 010 011 100 101 110 111 |
Например, 3763,2 = 011 111 110 011 , 010 100 = 11111110011,010 (отброшены незначащие нули).
Приведенное выше правило перевода 8 2 связано с тем, что 8 = .
В самом деле,
3763,24 = 3 + 7 + 6 + 3 + 2 + 4 = (0 + 1 + 1 ) + (1 + 1 + 1) + (1 + 1 + 0) + (0 + 1 + 1) + (0 + 1 + 0) + (1 + 0 + 0) = 0+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 0+ 0+ 1+ 1+ 0+ 1+0+ 1+ 0+ 0 =
= 011 111 110 011, 010 10 .
Для перевода 2 8 следует разделить двоичное число влево и вправо от запятой на триады, а затем заменить каждую триаду одной восьмеричной цифрой. Если первая триада в целой части или последняя триада в дробной части числа получаются неполными, то нужно дополнить их незначащими нулями.
Пример 3.
1011110111,1011010 = 001011110111,101101010 = 1367,55
В связи с тем, что перевод 10 8 или 8 10 выполняется быстрее, чем перевод 10 2 или 2 10, то перевод 10 2, как правило, производят по схеме 10 8 2 , а вместо 2 10 соответственно 2 8 10 .
3. Шестнадцатеричная система счисления.
Основанием системы является число 16. Для изображения произвольного числа нужно использовать 16 цифр. Так как цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 недостаточно, то дополнительно применяют первые буквы латинского алфавита: A (цифра 10), B (цифра 11), C (цифра 12), D(цифра 13), E (цифра 14), F (цифра 15).
Пример 4. Перевод 16 10:
A8B7,E = 101 + 81 + 111 + 71 + 141 = 104096 + 8256 +
+ 1116 + 7 + 14/16 = 43191,87 .
Пример 5. Перевод 10 16 .
7643, = 1EDB,
7643 16 0, 4 16
64 477 16 6, 4 16
124 32 29 16 6, 4 16
112 157 16 1 6, 4 16
123 144 14 …………
112 13
11
Перевод 16 2 . Так как 16 = , то в этом случае каждая шестнадцатеричная цифра должна быть представлена двоичной тетрадой.
-
Шестнадцате-
ричное число
Двоичное
число
Двоичная
тетрада
Шестнадцате-
ричное число
Двоичное
число
Двоичная
тетрада
0
1
2
3
4
5
6
7
0
1
10
11
100
101
110
111
0000
0001
0010
0011
0100
0101
0110
0111
8
9
A
B
C
D
E
F
1000
1001
1010
1011
1100
1101
1110
1111
1000
1001
1010
1011
1100
1101
1110
1111
Пример 6.
4AD,B8 = 0100 1010 1101, 1011 1000 = 10010101101,10111.
Перевод 2 16. Исходное число разделяют влево и вправо от запятой на тетрады, а затем каждую тетраду записывают одной шестнадцатеричной цифрой.
Пример 7.
11101111100001,0110 =0011101111100001,01101100 = 3BE1,6С
Для сокращения вычислений вместо 10 2 выполняют 10 16 2 , а вместо 2 10 выполняют 2 16 10 .
Примечание. Очевидно, что переводы из 16 с/с в 8 с/с и наоборот выполняют с применением 2 с/с как буферной. Например, перевод 16 8 производится по схеме 16 2 8.