Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Бахты.doc
Скачиваний:
82
Добавлен:
12.02.2015
Размер:
654.34 Кб
Скачать

1111111101000111(2) - Инвертируем биты - 0000000010111000(2)

Добавляем двоичную единицу:

0000000010111000(2) + 0000000000000001(2) = 0000000010111001(2) = |-185|

Так как один бит является знаковым, то естественно появляется разница в диапазонах

значений для чисел со знаком и без знака. Кроме этого число интерпретируется

по-разному в зависимости от того как на него смотреть.

10000000(2) - это число 128 если смотреть на него как на беззнаковое

10000000(2) - это число -128 если смотреть на него как на знаковое (судя по первому биту это

отрицательное число). Число -128 является самым большим среди однобайтовых

знаковых чисел.

01111111(2) - это число +127 - самое большое положительное число среди однобайтовых

знаковых чисел.

Еще пример, если для целого 90(10) отведено 2 байта, то содержимым байта будет двоичное число 01011010(2), а для числа –90(10) соответственно 1111111110100110(2).

Если при кодировании числа знак или цифра числа не размещается в поле, то

возникает ситуация переполнения знака.

Поскольку в ячейке из k разрядов можно записать 2k различных комбинаций из 0 и 1, то в различных ячейках можно записать:

1 байт знаковых -128..127

беззнаковых 0..255

2 байта знаковых -32768..32767

беззнаковых 0..65535

4 байта знаковых -2147483648..2147483647

беззнаковых 0..4294967295

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

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

Данные с плавающей точкой

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

Intel *86

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

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

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

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

Вещественное число в компьютерах Intel занимает от 4 до 10 смежных байт и имеет следующую структуру в памяти ПК:

Здесь s - знаковый разряд числа; e - экспоненциальная часть (содержит двоичный порядок); m - мантисса числа. Если переписать число, записанное в памяти, то получим следующее число

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

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