русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Представление целых чисел без знака и со знаком


Дата добавления: 2013-12-23; просмотров: 2677; Нарушение авторских прав


ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ НА ЭВМ

ЛЕКЦИЯ № 2

Основные вопросы:

ü Представление целых чисел в памяти ЭВМ.

ü Представление вещественных чисел в памяти ЭВМ.

ü Представление текстовой информации.

 

 

Введем основные понятия на примере 4-битовых машинных слов. Такой размер слова обеспечивает хранение десятичных чисел только от 0 до 15 и поэтому не представляет практического значения. Однако они менее громоздки, а основные закономерности, обна­руженные на примере 4-битовых слов, сохраняют силу для машин­ного слова любого размера.

Предположим, что процессор ЭВМ способен увеличивать (прибавлять единицу) и дополнять (инвертировать) 4-битовые слова. Например, результатом увеличения слова 1100 является 1101, а ре­зультатом дополнения этого слова является 0011. Рассмотрим слово 0000, представляющее десятичное число 0. В результате увеличения содержимое этого слова станет равным 0001, что соответствует десятичному числу 1. Продолжая последовательно увеличивать 4-битовые слова, придем к ситуации, когда, увеличивая слово 1111 (которое представляет десятичное число 15), получим в результате слово 0000, т. е. 111+1 = 0000 (15+1=0), при этом получили неверную арифметическую операцию и вернулись в исходное состояние. Это произошло из-за того, что слово памяти может состоять только из конечного числа битов. Таким образом, числовая система ЭВМ является конечной и цикличной.

Такой ситуации, приводящей к неверному арифметическому результату, можно избежать, если битовую конфигурацию 1111 принять за код для -1. Тогда 1110 интерпретируется как -2; 1101 – 3 и т.д. до 1000 – 8. Тем самым получили другую числовую систему – со знаком, содержащую как положительные, так и отрицательные числа. В этой системе половина четырехбитовых конфигураций, начинающаяся с единицы, интерпретируется как отрицательные числа, а другая половина, начинающаяся с 0, – как положительные числа или нуль. Поэтому старший бит числа (третий по счету, если нумерацию битов начинать с нуля справа налево) называется знаковым битом. Числовая система со знаком также конечна и циклична, однако в этом случае арифметически неверный результат даст попытка увеличить число 8 на единицу. Преимущество введения числовой системы со знаком заключается в возможности представления как положительных, так и отрицательных чисел.



Если знаковый бит равен нулю, то значение числа легко вычисляется - игнорируется знаковый бит, а оставшиеся три бита интерпретируются как двоичный код десятичного числа. Например, слово 0110 представляет двоичное число 110, которое равно десятич­ному числу 6.

Для оценки отрицательного числа нужно изменить его знак. Рассмотрим четырехбитовое число k в системе со знаком. Тогда –k = (-1-k)+1, следовательно, для вычисления значения - k необхо­димо вычесть k из -1 (т.е. из 1111) и затем прибавить 1 (т.е. 0001). Заметим, что операция вычитания всегда возможна, никогда не требует заема и равнозначна операции инвертирования битов вычитаемого. Например, 1111 - 1011 = 0100, здесь в вычитаемом, равном 1011, единицы перешли в нули, а нуль - в единицу. Инвертирование битов в слове называется дополнением до единицы. Для определения отрицательного значения числа k надо к его до­полнению до единицы прибавить единицу (согласно вышепри­веденному равенству). Инвертирование битов в слове с добавлением единицы к младшему биту называется дополнением до двух. Нап­ример, требуется найти, какое число закодировано в слове 1001. Для этого сначала выполняем операцию инвертирования 1001®0110, а затем к полученному результату прибавляем единицу 0110+1 = 0111, что является двоичным кодом числа 7. Таким образом, значением 1001 является отрицательное 7, т.е. -7.

Индикаторы переноса и переполнения

Рассмотрим более подробно ситуацию, приводящую при уве­личении четырехбитового числа (т.е. прибавления к нему 1) к не­верному арифметическому результату, возникшую из-за конечности числовой системы ЭВМ. В числовой системе без знака эта проблема возникает при увеличении слова 1111, при этом имеет место перенос единицы из знакового бита. В случае системы чисел со знаком перенос из старшего бита дает верный результат: 1111+ 0001 = 0000 (что правильно: -1 + 1 = 0 ). Но в этой системе увеличение слова 0111 приводит к ошибочной ситуации: 0111 + 1 = 1000 (7 + 1 = -8), при этом имеет место перенос в знаковый бит.

В арифметико-логическом устройстве (АЛУ) процессора ЭВМ содержатся два индикатора - индикатор пере­носа и индикатор переполнения. Каждый индикатор содержит 1 бит информации и может быть процессором установлен (в этом случае ему придается значение, равное 1) или сброшен (равен 0). Индикатор переноса указывает на перенос из знакового бита, а индикатор пе­реполнения - на перенос в знаковый бит. Таким образом, после завершения операции, в которой происходит перенос в старший бит, процессор устанавливает индикатор переполнения, если такого пере­носа нет, то индикатор переполнения сбрасывается. Индикатор переноса обрабатывается аналогичным образом.

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

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

Например, правильность операции сложения определяется на основании следующих условий:

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

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

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

б) двух отрицательных чисел будет арифметически правильным тогда и только тогда, когда будет происходить перенос в знаковый бит, причем в этой ситуации перенос из знакового бита происходит всегда;

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

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

Пример 1. Рассмотрим сложение двух чисел 0101+0011=1000. В результате выполнения операции сложения произошел перенос в знаковый бит, а переноса из знакового бита не было. Таким образом, после завершения этой операции индикатор переноса будет сброшен, а индикатор переполнения установлен. Поэтому если рассматривать эти два числа как целые без знака, то результат является арифметически правильным, так как индикатор переноса сброшен. Если рассматривать числа в системе со знаком, то бит переполнения показывает, что произошло изменение знака (перенос в знаковый бит есть, а из – нет), поэтому арифметический результат неправильный.

Пример 2. В результате сложения 1101+0101=0010 происходит перенос и в знаковый бит, и из знакового бита. Поэтому будет установлен индикатор переноса, а индикатор переполнения сброшен. Следовательно, в системе чисел без знака результат является арифметически неправильным, а в системе чисел со знаком – правильным

Пример 3. В результате сложения 0011+0010=0101 не происходит переноса ни в знаковый бит, ни из него. Поэтому оба индикатора будут сброшены. Следовательно, в этом случае в обеих числовых системах (без знака и со знаком) результат будет арифметически правильным.

Операцию вычитания можно свести к операции сложения в силу того, что А–В=А+(–В). Таким образом, необходимо только над вычитаемым произвести операцию дополнения до двух и сложить его с уменьшаемым. Например, операция 0011-1001 эквивалентна операции 0011+(0110+1)=0011 + 0111 = 1010. В этом случае в системе чисел без знака (3 - 9 = 10) и со знаком (3-(-7) = -6) резуль­тат является арифметически неправильным.

Правильность или неправильность результатов вычитания, так же как и при сложении, зависит от того, происходили (или нет) переносы в знаковый бит или из него. Чтобы понять, как процессор устанавливает индикаторы переноса и переполнения, надо помнить, что вычитание выполняется как сложение: А-В=А+(-В). Если это сложение приводит к переносу из знакового бита, то индикатор переноса сбрасывается, иначе он устанавливается. Следовательно, в случае вычитания индикатор переноса устанавливается обратно тому, как при сложении. Индикатор переполнения устанавливается, если уменьшаемое и вычитаемое имеют противоположные знаки (т.е. имеют разные знаковые биты), а результат вычитания имеет тот же знак, что и вычитаемое, то индикатор переполнения сбрасывается.

Таким образом, состояние индикатора переноса (сброшен или установлен) показывает соответственно на правильность и непра­вильность вычитания в числовой системе без учета знака, а сбро­шенный или установленный индикатор переполнения показывает соответственно на правильность или неправильность вычитания в числовой системе со знаком. При этом индикатор переноса устанавливается тогда и только тогда, когда нет переноса из знакового бита, а индикатор переполнения устанавливается тогда и только тогда, когда был только один перенос в знаковый бит или из него.

Пример 4. В результате выполнения операции вычитания 1001-0011 = =1001+(-0011)=1001+(1100+1)=1001+1101=0110 происходит перенос из знакового бита, а переноса в знаковый бит нет. Следовательно, индикатор переноса будет сброшен, а индикатор переполнения установлен, что указывает на то, что в данном примере в системе без знака результат арифметически правильный, а в системе со знаком – неправильный.

 

Представление вещественных чисел в памяти ЭВМ.

Форматы данных

 

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

Данные, обрабатываемые ЭВМ, делятся на три группы: логи­ческие коды, числа с фиксированной запятой и числа с плавающей запятой.

Представление логических кодов. Логические коды могут размещаться в отдельных байтах и в словах. Для их представления используются все разряды: для байта от 0-го до 7-го, для слова - от 0-го до 15-го. Логическими кодами могут быть представлены символьные величины, числа без знака и битовые величины.

Символьные величины задаются в коде ASCII (КОИ-7), каждый символ занимает один байт, разряд 7 которого всегда содержит 0. Символы строки размещаются в последовательно-адресуемых байтах оперативной памяти. Например, символьная строка ABCDE (коды ASCII: A- 1018,B- 1028,C- 1038, D- 1048,Е- 1058), первый знак которой помещается в ячейку с адресом 1000 (адреса представлены в 8-ричной системе счисления), размещается в оперативной памяти следующим образом:

 
 




<== предыдущая лекция | следующая лекция ==>
Тогда x1 будет правильной дробью и к этому числу можно применить ту же самую процедуру для определения следующего коэффициента q-2 и т.д. | ЛЕКЦИЯ № 3


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.007 сек.