
- •Процедуры, функции; записи; файлы. Программирование рекурсивных алгоритмов.
- •Программирование рекурсивных алгоритмов
- •0 00011010 - Положительное число 1 00011010 – отрицательное число
- •Кодирование текстовой информации
- •Кодирование графической информации
- •Кодирование звуковой информации
- •Языки программирования высокого уровня
- •Основные преимущества алгоритмических языков перед машинными таковы:
0 00011010 - Положительное число 1 00011010 – отрицательное число
Диапазону значений принадлежат значения от -128 до 127 включительно (при переводе в десятичную систему счисления).
При этом в вычислительной технике прямой код используется почти исключительно для представления положительных чисел. Для отрицательных чисел используется так называемый дополнительный код. В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.
Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, получаем 1 1110011. Далее следует прибавить единицу к получившемуся инверсией числу: 1 1110011 + 1 = 1 1110100
В итоге и получается число, которое принято называть дополнительным кодом числа.
Причина, по которой используется дополнительный код числа для представления отрицательных чисел, связана с тем, что так проще выполнять математические операции. Например, у нас два числа, представленных в прямом коде. Одно число положительное, другое – отрицательное и эти числа нужно сложить. Однако просто сложить их нельзя. Сначала компьютер должен определить, что это за числа. Выяснив, что одно число отрицательное, ему следует заменить операцию сложения операцией вычитания. Потом, машина должна определить, какое число больше по модулю, чтобы выяснить знак результата и определиться с тем, что из чего вычитать. Куда проще складывать числа, если отрицательные преобразованы в дополнительный код.
Кодирование вещественных чисел
Для удобства вещественные числа приводят к виду, так называемого, нормализованного представления числа. Заключается такое представление в том, что число записывается в виде произведения на основание системы счисления, возведенное в ту или иную степень.
Например: 123,45=0,12345*10^3
Число 0,12345 – мантисса вещественного числа, 10 – основание системы счисления, 3 – порядок. При этом запятая (точка), разделяющая дробную и целую части, ставится перед первой значащей цифрой (отличной от 0). Понятно, что нормализированное представление используется не только для десятичной системы счисления.
Нормализованная форма представления числа – это одна из форм множества вариантов экспоненциальной формы записи числа. Экспоненциальная запись — представление действительных чисел в виде мантиссы и порядка.
Числа с одинарной точностью занимают 4 байта (single). Числа с двойной точностью – 8 байт (double).
Кодирование текстовой информации
Каждая буква принадлежит определенному алфавиту, в котором символы следуют друг за другом и, следовательно, могут быть пронумерованы последовательными целыми числами. Каждой букве можно сопоставить целое положительное число и назвать его кодом символа. Именно этот код будет храниться в памяти компьютера, а при выводе на экран или бумагу «преобразовываться» в соответствующий ему символ. Чтобы отличить представление чисел от представления символов в памяти компьютера, приходится также хранить информацию о том, какие именно данные закодированы в конкретной области памяти.
Таблица, в которой всем символам компьютерного алфавита поставлены в соответствие порядковые номера (коды), называется таблицей кодировки.
В качестве стандарта в мире принята таблица ASCII (American Standart Code for Information Interchange - Американский стандартный код для обмена информацией). ASCII является однобайтовой системой кодирования.
В соответствие с таблицей кодирования ASCII для представления одного символа выделяется 1 байт (8 бит). Набор из 8 ячеек может принять 28 = 256 различных значений. Первые 128 значений (от 0 до 127) постоянны и формируют так называемую основную часть таблицы, куда входят десятичные цифры, буквы латинского алфавита (заглавные и строчные), знаки препинания (точка, запятая, скобки и др.), а также пробел и различные служебные символы (табуляция, перевод строки и др.). Значения от 128 до 255 формируют дополнительную часть таблицы, где принято кодировать символы национальных алфавитов.
Для русского языка существует несколько таблиц кодирования: Windows-1251 (СР1251), CP866, КОИ8, ISO (на практике используется редко).
Ограниченный набор кодов (256) создает трудности для разработчиков единой системы кодирования текстовой информации. Вследствие этого было предложено кодировать символы не 8-разрядными двоичными числами, а числами с большим разрядом, что вызвало расширение диапазона возможных значений кодов. Система 16-разрядного кодирования символов называется универсальной – UNICODE. Шестнадцать разрядов позволяет обеспечить уникальные коды для 65 536 символов, что вполне достаточно для размещения в одной таблице символов большинства языков.
Unicode является системой двубайтового кодирования.
В Unicode первые 128 кодов совпадают с таблицей ASCII.
В таблицах символы располагаются в том же порядке, в котором они расположены в алфавите.