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


Полезное:

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


Категории:

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






Представление информации





Представление целых чисел

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

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

Целые числа без знака

Беззнаковые числа могут быть представлены в виде байта, слова или двойного слова - в зависимости от их размера. Такие числа записываются в ячейки в дво­ичной системе счисления, занимая все разряды ячейки. Например, если для цело­го 98 отведен байт, то содержимым байта будет двоичное число 01100010 (62h), а если отведено слово, то оно будет иметь вид 0062h.

Поскольку в ячейке из 2k разрядов можно записать к различных комбинаций из 0 и 1, то в виде байта можно представить целые от 0 до 255 (=28-1), в виде слова - целые от 0 до 65535 (=216-1), в виде двойного слова - целые от 0 до 4 294 967 295 (=232-1).

Отметим "экзотическую" особенность представления чисел в ПК: числа разме­ром в слово и двойное слово хранятся в памяти в "перевернутом" виде". Если на число отведено слово памяти, то старшие (левые) 8 битов числа размещаются во втором байте слова, а младшие (правые) 8 битов - в первом байте; в терминах шестнадцатеричной системы: первые две цифры числа хранятся во втором байте слова, а две последние цифры - в первом байте. Например, число 98 = 0062h хранится в памяти так (А - адреса слова):

Зачем так сделано? Как известно, сложение и вычитание многозначных чисел мы начинаем с действий над младшими цифрами (например, при сложении чисел 1234 и 5678 мы сначала складываем цифры 4 и 8), а затем постепенно переходим к более старшим цифрам. С другой стороны, первые модели ПК (с процессором 8080) были 8-разрядными, в них за раз можно было считать из памяти только один байт. Поскольку в этих условиях многозначное число нельзя считать из па­мяти сразу целиком, то в первую очередь приходится считывать байт, где нахо­дятся младшие цифры числа, а для этого надо, чтобы такой байт хранился в па­мяти первым. По этой причине в первых моделях ПК и появилось "перевернутое" представление чисел. В последующих же моделях, где уже можно было сразу считать из памяти все число, ради сохранения преемственности, ради того, чтобы ранее составленные программы могли без изменений выполняться на новых ПК, сохранили это "перевернутое" представление чисел.

Отметим, что в регистрах числа размером в слово хранятся в нормальном, не перевернутом виде - за этим следят команды пересылки:

"Перевернутое" представление используется и для чисел размером в двойное слово: в первом байте двойного слова хранятся младшие (правые) 8 битов числа, во втором байте - предпоследние 8 битов и т. д. Например, число 12345678h хра­нится в памяти так:

Если рассматривать двойное слово как два слова, тогда можно сказать, что в первом слове хранятся 16 младших (правых) битов числа, а во втором слове -16 старших (левых) битов, причем каждое из этих слов в свою очередь "перевернуто".

Целые числа со знаком

Эти числа также представляются в виде байта, слова и двойного слова. Как байт можно представить числа от -128 до +127, как слово - от -32768 до +32767, как двойное слово - от -2147483648 до +2147483647.

В ПК знаковые числа записываются в дополнительном коде: неотрицательное число записывается так же, как и беззнаковое число, а отрицательное число х представляется беззнаковым числом 2k-|x|, где k - количество разрядов в ячейке, отведенной под число:

Например, дополнительным кодом числа +98 будет байт 62h или слово 0062h, а дополнительным кодом числа -98 - байт 9Eh (=158=256-98) или слово FF9Eh (=216-98=10000h-62h).

Приведем еще несколько примеров представления знаковых чисел в дополни­тельном коде (при ячейке размером в байт):

Из этих примеров видно, что в дополнительном коде самый левый бит играет роль знакового: для неотрицательных чисел он равен 0, а для отрицательных - 1.

Как и беззнаковые, знаковые числа размером в слово и двойное слово записы­ваются в памяти в "перевернутом" виде. Например, число -98 как слово будет храниться в памяти таким образом:

При этом знаковый бит оказывается во втором (правом) байте слова.

Двоично-десятичные числа

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

Однако есть классы задач (например, коммерческие), для которых характерен ввод большого массива числовых данных с последующим применением к ним всего одной-двух арифметических операций и выводом также большого количе­ства результатов. В этих условиях переводы чисел из десятичной системы в дво­ичную и обратно могут занять львиную долю общих затрат времени, что, конеч­но, невыгодно. С учетом этого в ПК предусмотрено специальное представление целых чисел, при котором они фактически не отличаются от записи чисел в де­сятичной системе и которое потому практически не требует перевода чисел из внешнего представления во внутреннее и обратно, и предусмотрены команды арифметических операций над такими числами. Данное представление чисел называется двоично-десятичным (binary coded decimal, BCD-числа) и строится по следующему принципу: берется десятичная запись числа и каждая его цифра за­меняется на четыре двоичные цифры (от 0000 до 1001), обозначающие эту цифру в двоичной системе. Например, число 193 будет представлено так: 0001 1001 0011.

Различие между двоичным и двоично-десятичным представлениями чисел про­является в том, что если в двоичном представлении за основу берется величина числа (независимо от того, как именно оно вначале было записано), то в двоич­но-десятичном представлении за основу берется запись числа, причем именно в десятичной системе (если число записать в другой системе, скажем в семеричной, то получилось бы иное представление). При этом однозначные числа (от 0 до 9) записываются одинаково в обоих представления, но уже двузначные числа представляются по-разному: например, число 13 в двоичном виде записывается как 00001011, а в двоично-десятичном - как 00010011.

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

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

О вещественных числах

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

Как же тогда работать на ПК с вещественными числами? Возможны два реше­ния данной проблемы.

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

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

 

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



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