- •1. Информация, информатика, информационные технологии
- •1.1 Информация
- •1.1.1. Понятие информации
- •1.1.2. Свойства информации
- •1.1.3. Понятие количества информации
- •1.1.4. Информационные процессы
- •1.1.5. Информация в жизни человечества
- •1.2. Предмет и структура информатики
- •Информатика
- •Аппаратное обеспечение
- •1.3. Представление (кодирование) данных
- •Системы счисления
- •Преобразование чисел из одной системы счисления в другую
- •Представление чисел в двоичном коде
- •1.3.2. Представление символьных и текстовых данных
- •1.3.3. Представление звуковых данных в двоичном коде
- •1.3.4. Представление графических данных в двоичном коде
- •1.3.5. Понятие сжатия информации
- •1.4. Структуры данных
- •1.5. Хранение данных
- •1.6. Математические основы информатики
- •1.6.1. Элементы теории множеств
- •1.6.2. Элементы теории графов
- •Основные понятия
- •Логические операции
- •Логические выражения. Порядок логических операций
- •Зависимости между логическими операциями
- •Табличное и алгебраическое задание булевских функций
- •1 1.7 Синтез цифровых схем.
- •1.7.1. Устройства обработки данных.
- •1.7.2. Построение элементов памяти цифровых устройств.
Представление чисел в двоичном коде
Представление чисел в памяти компьютера имеет специфическую особенность, связанную с тем, что в памяти компьютера они должны располагаться в байтах – минимальных по размеру адресуемых (т.е. к ним возможно обращение) ячейках памяти. Очевидно, адресом числа считать адрес (номер) первого байта. В байте может содержаться произвольный код из восьми двоичных разрядов, и задача представления состоит в том, чтобы указать правила, как в одном или нескольких байтах записать число.
Действительное число многообразно в своих «потребительских свойствах». Числа могут быть целые точные, дробные точные, рациональные, иррациональные, дробные приближенные, числа могут быть положительными и отрицательными. Числа могут быть «карликами», например, масса атома, «гигантами», например, масса земли, реальными, например, количество студентов в группе, возраст, рост. И каждое из перечисленных чисел для оптимального представления в памяти потребует свое количество байтов.
Очевидно, единого оптимального представления для всех действительных чисел создать невозможно, поэтому создатели вычислительных систем пошли по пути разделения единого по сути множества чисел на типы (например, целые в диапазоне от … до…, приближенные с плавающей точкой с количеством значащих цифр…и т.д.). Для каждого в отдельности типа создается собственный способ представления.
Целые числа. Целые положительные числа от 0 до 255 можно представить непосредственно в двоичной системе счисления (двоичном коде). Такие числа будут занимать один байт в памяти компьютера.
-
Число
Двоичный код
0
0000 0000
1
0000 0001
2
0000 0010
3
0000 0011
…
…
255
1111 1111
В такой форме представления легко реализуется на компьютерах двоичная арифметика.
Если нужны и отрицательные числа, то знак числа может быть закодирован отдельным битом, обычно это старший бит; ноль интерпретируется как плюс, единица как минус. В таком случае одним байтом может быть закодированы целые числа в интервале от –127 до +127, причем двоичная арифметика будет несколько усложнена, т.к. в этом случае существуют два кода, изображающих число ноль 0000 0000 и 1000 0000, и в компьютерах на аппаратном уровне это потребуется предусмотреть. Рассмотренный способ представления целых чисел называется прямым кодом. Положение с отрицательными числами несколько упрощается, если использовать, так называемый, дополнительный код. В дополнительном коде положительные числа совпадают с положительными числами в прямом коде, отрицательные же числа получаются в результате вычитания из 1 0000 0000 соответствующего положительного числа. Например, число –3 получит код
_ 1 0000 0000
0000 0011
1111 1101
В дополнительном коде хорошо реализуется арифметика, т.к. каждый последующий код получается из предыдущего прибавлением единицы с точностью до бита в девятом разряде. Например, 5-3=5+(-3)
+ 0000 0101
1111 1101
1 0000 0010
т.е. отбрасывая подчеркнутый старший разряд получим 2.
Аналогично целые числа от 0 до 65536 и целые числа от -32768 до 32767 в двоичной (шестнадцатеричной) системе счисления представляются в двухбайтовых ячейках. Существуют представления целых чисел и в четырехбайтовых ячейках.
Действительные числа. Действительные числа в математике представляются конечными или бесконечными дробями, т.е. точность представления чисел не ограничена. Однако в компьютерах числа хранятся в регистрах и ячейках памяти, которые представляют собой последовательность байтов с ограниченным количеством разрядов. Следовательно, бесконечные или очень длинные числа усекаются до некоторой длины и в компьютерном представлении выступают как приближенные.
Для представления действительных чисел, как очень маленьких, так и очень больших, удобно использовать форму записи чисел в виде произведения виде
X = m · qp, где
m — мантисса числа,
q – основание системы счисления,
p — целое число, называемое порядком.
Такой способ записи чисел называется представлением числа с плавающей точкой.
Т.е. число 1234.56 может быть записано в одном из видов
1234.567=123,4567*101=12,34567*102 =1,234567*103 =0,1234567*104
Очевидно, такое представление не однозначно. Если мантисса 1/q|m|<q (0,1|m|<1 для десятичной системы счисления), то представление числа становится однозначным, а такая форма называется нормализованной. Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, т.е. максимальная точность.
Действительные числа в компьютерах различных типов записываются по-разному, тем не менее, всеми поддерживаются несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру. Рассмотрим на примере 4 байтного числа.
Знак мантиссы
В памяти компьютера действительные числа представляются в двоично-десятичной форме. Первый разряд представления используется для записи знака мантиссы. За ним следует группа разрядов, определяющих порядок, а остальные разряды определяют абсолютную величину мантиссы. Размеры обеих групп разрядов фиксируются.
Так как порядок может быть положительным или отрицательным, нужно решить проблему его знака. Величина порядка представляется с избытком, т.е. вместо истинного значения порядка хранится число, называемое характеристикой (или смещенным порядком). Для получения характеристики необходимо к порядку прибавить смещение. Например, в нашем случае для порядка используется семь битов (с 31 по 24). В семи битах могут содержаться числа от 0 до 27-1=127. Целесообразно в качестве смещения принять половину диапазона т.е. 64, и смещенный порядок вычислять как m′=m+64, тогда диапазон представления в семи байтах от 0 до 127 для m трансформируется в диапазон от -64 до +63 для m′.
Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.
Так как мантисса нормализованного числа всегда начинается с нуля, некоторые схемы представления ее лишь подразумевают, используя лишний разряд для повышения точности представления мантиссы.
Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в компьютере при заданном формате. Мантисса кодируется как текст (суть двоично-десятичного кодирования) т.е. каждая десятичная цифра изображается двоичным кодом в одной тетраде (4-х битах).
Возвращаясь к нашему примеру можно получить, что число 1234.567 будет выглядеть в памяти так 1234.567=0.1234567*104 смещенный порядок m′=64+4=68=1000100(2)
0
0
0
0011 0100
Заметим представление приближенное, последняя значащая цифра 7 усекается.
Как и в случае целых чисел, в системах программирования и информационных системах могут использоваться несколько стандартизованных типов данных, реализующих модель с плавающей точкой.
Например, в языке Object Pascal применяются следующие типы данных
Для целых чисел— 10 байтов,
Тип |
Диапазон значений |
Размер в байтах |
Integer |
-2147483648..2147483647 |
4 |
Cardinal |
0..429467295 |
4 |
Shortint |
-128..127 |
1 |
Smallint |
-32768..32767 |
2 |
Longint |
-2147483648..2147483647 |
4 |
Int64 |
-263…264-1 |
8 |
Byte |
0…255 |
1 |
Word |
0..65535 |
2 |
Longword |
0..4294967295 |
4 |
Для действительных чисел
ТИП |
ДИАПАЗОН ЗНАЧЕНИЙ |
Кол цифр |
Байт |
Real |
5.0*10-324 - 1.7*10324 |
15-16 |
8 |
Real48 |
2.9*10-39 - 1.7*1038 |
11-12 |
6 |
Single |
1.5*10-45- 3.4*1038 |
7-8 |
4 |
Double |
5.0*10-324 - 1.7*10324 |
15-16 |
8 |
Extended |
3.6*10-4951 – 1.1*104951 |
19-20 |
10 |
Comp |
-263+1 - +63-1 |
19-20 |
8 |
Currency |
-922337203685477.5808..+9 |
19-20 |
8 |
Понятие типа данных. Как уже говорилось, минимально адресуемой единицей памяти является байт, но представление числа часто требует большего объема. Очевидно, такие числа займут группу байт, а адресом числа будет адрес первого байта группы. Следовательно, произвольно взятый из памяти байт ничего нам не скажет о том, частью какого информационного объекта он является - целого числа, числа с плавающей запятой или команды. Поэтому можно сделать вывод, что кроме задачи представления данных в двоичном коде, параллельно решается обратная задача – задача интерпретации кодов, т.е. как из кодов восстановить первоначальные данные.
Для представления основных видов информации (числа целые, числа с плавающей запятой, символы, звук и т.д.) в системах программирования и информационных системах используют специального вида абстракции - типы данных. Каждый тип данных определяет логическую структуру представления и интерпретации для соответствующих данных и для каждого типа данных определены и соответствующие ему операции обработки. Например, для целых – сложение, вычитание, умножение, для действительных - сложение, вычитание, умножение, деление.
