Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Внутреннее представление данных в памяти компьютера





Обрабатываемые с помощью компьютера данные записываются в специальных запоминающих устройствах, называемых памятью. Двоичное кодирование используется для представления в компьютере как числовой, так и текстовой, графической, звуковой информации. Форматы представления данных в памяти компьютера определяют диапазоны значений, которые эти данные могут принимать, скорость их обработки, объем памяти, который требуется для хранения данных.

Существуют две формы представления числовых данных, предназначенные для целых и действительных чисел соответственно.

Целые числа точно представляются в памяти компьютера и позволяют выполнять операции без погрешностей. Целочисленная арифметика позволяет реализовать операции деления нацело с остатком (причем можно в качестве результата получить как частное от деления, так и остаток). Именно целые числа используются при решении многих экономических задач и задач управления (примерами данных, представленных целочисленными величинами, являются количество акций, сотрудников, транспортных средств, деталей, единиц боевой техники и т.п.; целые числа служат для нумерации элементов в различных наборах данных, для обозначения даты и времени, для кодирования текста, изображения и звука), реализации средств криптографической защиты информации (защиты с помощью шифрования), в программах электронной почты и в средствах навигации в Internet для записи адреса и т.д. Поэтому аппаратурой компьютеров обычно поддерживается несколько форматов представления целочисленных данных и множество операций над ними.

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

Рассмотрим подробнее это представление.

Все числа, которые хранятся в памяти компьютера, занимают определенное количество двоичных разрядов. Это количество определяется форматом числа. Обычно для представления целых чисел используются несколько форматов (например, в IBM-совместимых персональных компьютерах поддерживается три формата: байт (8 разрядов), слово (16 разрядов), двойное слово (32 разряда)). Целые числа вписываются в разрядную сетку, соответствующую формату. Для целых чисел разрядная сетка имеет вид:

где b i – разряды двоичной записи целого числа (запись числа имеет вид b n–2 b n–3... b 1 b 0, разделитель между целой и дробной частью числа зафиксирован после b0, дробной части нет); S – разряд, отведенный для представления знака числа (для положительных чисел знак «+» кодируется цифрой 0, а знак «–» для отрицательных – цифрой 1); n – количество двоичных разрядов в разрядной сетке.

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

Например, число 1110=10112 в формате байта будет записано так:

(старший (знаковый) разряд заштрихован). В формате слова (16 разрядов) то же число будет выглядеть так:

Отрицательные числа для упрощения выполнения операций хранятся в дополнительном коде, который получается путем обращения (инверсии) всех разрядов в двоичной записи числа, вписанной в разрядную сетку, и добавления 1. Например, число –1110 в формате байта в памяти компьютера будет получено следующим образом.

Вычисляется прямой код:

затем выполняется инверсия полученного прямого кода (получается обратный код):

к обратному коду прибавляется 1:

получается дополнительный код – запись отрицательного числа –1110 в памяти компьютера:

Такая запись чисел ограничивает диапазоны значений, с которыми может работать компьютер. Например, для чисел в формате байта представимы значения от –128 (–27) до 127 (27–1), для чисел в формате слова – от –32 768 (–215) до 32 767 (215–1), а длинные целые числа в формате двойного слова могут принимать значения из диапазона от –2 147 483 648 до 2 147 483 647.

Если по условиям задачи используются только положительные значения, то их можно хранить в формате чисел без знака – старший разряд рассматривается как разряд, содержащий двоичную цифру записи числа, а не знак. При этом диапазон представимых положительных чисел увеличивается. Например, в байт можно записать числа от 0 до 255 (28–1), а в слово – значения от 0 до 65535 (216–1).

Особенности представления чисел в памяти компьютера могут привести и к ошибкам при обработке данных.

Рассмотрим пример. Предположим, что программа выполняет функции подсчета каких-либо объектов, и для хранения количества этих объектов используется представление данных в формате целого числа со знаком, записанного в байт. Рассмотрим ситуацию, когда количество объектов уже стало равным 127 и увеличивается еще на 1. Результат должен быть равен 128, но сможем ли мы его получить с помощью компьютера, если работаем со знаковыми числами в формате байта?

Целое число 127 в памяти компьютера будет представлено цепочкой нулей и единиц 01111111. При добавлении единицы будет получено число 10000000:

(действия в двоичной системе счисления выполняются так же, как и в десятичной, но используются только две цифры, поэтому, если при сложении разрядов получается значение большее 1, происходит перенос в старший разряд). Но старший разряд является знаковым! Поэтому в результате сложения компьютер получит целое число –128, записанное своим дополнительным кодом. И именно это отрицательное число будет затем использовано во всех вычислениях.

Этот пример демонстрирует возможность появления ошибок при выполнении программ вследствие неправильно выбранных форматов для представления данных.

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

Разработчики программ должны отслеживать такие ситуации и предотвращать подобные ошибки, а пользователи должны четко формулировать требования к условиям эксплуатации программ, их входным данным и результатам. Игнорирование этих требований может создать серьезные проблемы.

Поэтому при разработке программного обеспечения очень важно знать, с какими диапазонами значений будет работать программа. Это позволит правильно определить форматы представления чисел и предупредить возможные ошибки при обработке данных.

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

При использовании двоично-десятичной формы представления данных десятичные числа также представляются с помощью двоичных кодов, но в двоичную систему переводится не все число, а каждая его цифра отдельно. Так как используется всего десять десятичных цифр от 0 до 9, а для представления старшей цифры 9 достаточно четырех двоичных цифр (910=10012), то каждая десятичная цифра в записи числа кодируется четырьмя двоичными цифрами в его двоично-десятичном представлении в памяти компьютера. Например, число 105910 представляется в памяти компьютера следующим образом:

Двоично-десятичные данные могут использоваться не только для представления целых чисел, но и для представления чисел, имеющих дробную часть.

Знак числа и позиция десятичного разделителя в нем кодируются отдельно. Для двоично-десятичных чисел также существуют различные форматы записи чисел в памяти компьютера. Конкретные форматы определяются его архитектурными особенностями.

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

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

Для представления этих чисел разработана специальная форма – данные в памяти компьютера хранятся в форме с плавающей точкой. Такое представление основано на записи числа в экспоненциальном виде, где разряды в записи числа представляются мантиссой M, а положение точки определяется указанием порядка p: M ´10 p .

При использовании такой формы представления часть разрядов разрядной сетки, в которую помещается число в памяти компьютера, отводится для хранения порядка числа p, а остальные разряды – для хранения мантиссы M:

Порядок числа и его мантисса хранятся в двоичном коде, поэтому перед их определением число переводится в двоичную систему.

Точность вычислений зависит от длины мантиссы, а порядок числа определяет допустимый диапазон представления действительных чисел. Например, в IBM-совместимых персональных компьютерах используются три формата представления данных в форме с плавающей точкой (32 разряда, 64 разряда и 80 разрядов), позволяющие представлять три диапазона положительных вещественных чисел: от 1,5´10‑45 до 3,4´1038, от 5´10324 до 1,7´10308 и от 1,9´104951 до 1,1´104932. Для представления положительных чисел в знаковый разряд записывается значение 0, а отрицательных чисел – 1. Порядок и мантисса записываются как целые числа.

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

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

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

Существуют разные способы кодирования символов.

Наиболее распространенной до последнего времени была кодировка ASCII (American Standard Code for Information Interchange). При использовании этой кодировки для представления каждого символа используется ровно 8 разрядов (один байт). Таким образом, имеется возможность кодирования 256 символов (они получают коды от 0 до 255). С помощью такой кодировки можно хранить только символы текста (без элементов форматирования или оформления).

Для отображения текстового документа с разбивкой его на строки, с выравниванием и т.п. в него наряду с обычными символами, представляющими буквы, цифры, знаки препинания, разделители, включаются специальные (управляющие) символы (например: «перевод строки», «возврат каретки», «табуляция» и т.д.).

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

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

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

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

ANSI-текст (или текст ASCII) – это текст без форматирования (с ним работает, например, приложение «Блокнот» в Windows 9х).

Если для представления информации в разных информационных системах используются разные кодировки, эти программы «не поймут» друг друга, поэтому может оказаться, что данные, подготовленные в одном месте, не смогут прочитать в другом. Например, текст, введенный с помощью программы «Блокнот» в Windows, нельзя будет прочитать в MS‑DOS.

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

Звук представляет собой непрерывный сигнал, колебания частиц среды, распространяющиеся в виде волн и воспринимаемые органами слуха. Чтобы закодировать звук, его надо сначала подвергнуть дискретизации. Этот процесс состоит в измерении и запоминании в памяти компьютера характеристик звуковой волны (амплитуды и периода) в виде двоичного кода, он выполняется аналого-цифровым преобразователем несколько десятков тысяч раз в секунду через равные промежутки времени. При воспроизведении двоичные коды подаются на вход цифро-аналогового преобразователя с той же частотой, что и при дискретизации, преобразуются в электрическое напряжение, а затем с помощью усилителя и динамика – в звук. Такой способ звукозаписи, называемый цифровым, требует большого объема памяти компьютера, у оцифрованного звука трудно менять тональность или тембр. Для кодирования музыки чаще используется не запоминание параметров звуковых волн, а запись последовательности команд, например: какую клавишу нажать, какова сила давления, сколько времени удерживать клавишу нажатой и т.д. Такая MIDI –запись аналогична нотной записи. Она компактна, в ней легко производится смена инструмента или тональность мелодии.

Date: 2015-09-05; view: 5140; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию