Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_Тимохова_Ч1.doc
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

1.4. Представление данных в памяти эвм Внутреннее представление данных в памяти компьютера. Общие понятия.

Целые числа в памяти компьютера хранятся в формате с фиксированной точкой, когда каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа; положение десятичной запятой фиксировано после определенного разряда.

Вещественные числа хранятся в формате с плавающей точкой, который основан на записи числа в нормализованном (экспоненциальном) виде m·10p , причем, часть разрядов ячейки памяти ЭВМ отводится для хранения порядка числа p, а остальные разряды – для хранения мантиссы m.

Текстовые данные рассматриваются как последовательность отдельных символов, каждому из которых ставится в соответствие двоичный код некоторого неотрицательного целого числа.

ASCII – только 256 кодов символов. Это неудобно, так как существуют языки, где символов больше. Поэтому разрабатывались другие коды (наборы символов). Пример – двухбайтовые наборы символов (DBCS – double-byte character sets). В двухбайтовом коде символы представляются одним и двумя байтами, что жутко неудобно.

Unicode – стандарт, в котором все символы состоят из 16 битов. Это позволяет кодировать свыше 65 тыс. символов. В этом коде для каждого алфавита определены свои кодовые позиции (code points), т.е. все 65536 символов (кодов) разбиты на отдельные группы (например: 0100-017F – европейские латинские, 0180-01FF – расширенные латинские, 0250-02AF – стандартные фонетические, 0370-03FF – греческий, 0400-04FF – кириллица). Около 29 000 кодовых позиций пока не заняты, но зарезервированы для использования. Таким образом, Unicode допускает обмен данными на разных языках.

На Unicode целиком построена операционная система Windows NT. У Windows 95 16-битное «наследство», поэтому вся внутренняя работа в этой ОС построена на использовании ANSI-строк (ANSI – American National Standards Institute, ANSI-текст – это текст без форматирования, с ним работает блокнот Windows 95).

Шрифты могут быть: растровые (каждый символ представляется в виде растра – битового массива), векторные (для каждого символа хранятся относительные координаты концов отрезков, из которых состоит соответствующий символ), True Type (содержат информацию о линиях и изгибах в виде формул и настроечную информацию для изменения масштаба).

Способ представления графических изображений называют растровым. При этом экран дисплея ЭВМ рассматривается как двумерный массив отдельных точек (пикселов), состояние каждой из которых (цвет и яркость) кодируется неотрицательным целым двоичным числом.

Кодирование звука состоит в его дискретизации (оцифровывании), т.е. в его измерении и запоминании в памяти компьютера характеристик звуковой волны (амплитуды и периода) в виде двоичного кода. Он выполняется аналого-цифровым преобразователем несколько десятков тысяч раз в секунду через равные промежутки времени. При воспроизведении двоичные коды подаются на вход цифро-аналогового преобразователя с той же частотой, что и при дискретизации, преобразуются в электрическое напряжение, а затем с помощью усилителя и динамика – в звук.

Кодирование музыки чаще всего состоит в записи последовательности команд: например, какую клавишу нажать, какова сила давления, сколько времени удерживать нажатой, и т.д. Такая MIDI-запись аналогична нотной записи. Она компактна, в ней легко производится смена инструмента или тональность мелодии.

Представление числовых данных в памяти компьютера.

Для представления информации в памяти ЭВМ (как числовой, так и не числовой) используется двоичный способ кодирования.

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.

Для кодирования символов достаточно одного байта. При этом можно представить 256 символов (с десятичными кодами от 0 до 255). Набор символов персональных ЭВМ, совместимых с IBM PC, чаще всего является расширением кода ASCII (American Standard Code for Information Interchange – стандартный американский код для обмена информацией).

В некоторых случаях при представлении в памяти ЭВМ чисел используется смешанная двоично-десятичная «система счисления», где для хранения каждого десятичного знака нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18-ю значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант.

Другой способ представления целых чисел – дополнительный код. Диапазон значений величин зависит от количества бит памяти, отведенных для их хранения. Например, величины типа Integer (все названия типов данных здесь и ниже представлены в том виде, в каком они приняты в языке программирования Turbo Pascal. В других языках такие типы данных тоже есть, но могут иметь другие названия) лежат в диапазоне от -32768 (-215) до 32767 (215 – 1) и для их хранения отводится 2 байта (16 бит); типа LongInt – в диапазоне от -231 до 231 – 1 и размещаются в 4 байтах (32 бита); типа Word – в диапазоне от 0 до 65535 (216 – 1) (используется 2 байта) и т.д.

Как видно из примеров, данные могут быть интерпретированы как числа со знаками, так и без знаков. В случае представления величины со знаком самый левый (старший) разряд указывает на положительное число, если содержит нуль, и на отрицательное, если – единицу.

Вообще, разряды нумеруются справа налево, начиная с 0. Ниже показана нумерация бит в двухбайтовом машинном слове.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дополнительный код положительного числа совпадает с его прямым кодом. Прямой код целого числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 37(10) = 100101(2) объявлено величиной типа Integer (шестнадцатибитовое со знаком), то его прямым кодом будет 0000000000100101, а если величиной типа LongInt (тридцатидвухбитовое со знаком), то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричное представление кода. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16).

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

  1. записать прямой код модуля числа;

  2. инвертировать его (заменить единицы нулями, нули – единицами);

  3. прибавить к инверсному коду единицу.

Например, запишем дополнительный код числа -37, интерпретируя его как величину типа LongInt (тридцатидвухбитовое со знаком):

  1. прямой код числа 37 есть 00000000000000000000000000100101;

  2. инверсный код 11111111111111111111111111011010;

  3. дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16).

При получении числа по его дополнительному коду, прежде всего, необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм:

  1. вычесть из кода числа 1;

  2. инвертировать код;

  3. перевести в десятичную систему счисления. Полученное число записать со знаком минус.

Примеры. Запишем числа, соответствующие дополнительным кодам:

  1. 0000000000010111. Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23.

  2. 1111111111000000. Здесь записан код отрицательного числа.

Исполняем алгоритм:

1) 1111111111000000(2) – 1(2) = 1111111110111111(2);

2) 0000000001000000;

3) 1000000(2) = 64(10).

Ответ: – 64.