Представление чисел в компьютере. Формат представления чисел с плавающей запятой Для положительных чисел прямой, обратный и дополнительный коды – это одно и тоже, т.е


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

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

Пример 4.4. Десятичное число 1.756 в форме записи чисел с порядком основания системы счисления можно представить так:

1.756 . 10 0 = 0.1756 . 10 1 = 0.01756 . 10 2 = ...

17.56 . 10 -1 = 175.6 . 10 -2 = 1756.0 . 10 -3 = ... .

Представлением числа с плавающей точкой называется представление числа N в системе счисления с основанием q в виде:

N = m* . q p ,

где m - множитель, содержащий все цифры числа (мантисса), p - целое число, называемое порядком.

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

Если в мантиссе первая цифра после точки (запятой) отлична от нуля, то такое число называется нормализованным .

Мантиссу и порядок q -ичного числа принято записывать в системе с основанием q , а само основание - в десятичной системе.

Пример 4.5. Приведем примеры нормализованного представления числа в десятичной системе:

2178.01 =0.217801 * 10 4

0.0045 =0.45 * 10 -2

Примеры в двоичной системе:

10110.01= 0.1011001 * 2 101 (порядок 101 2 =5 10)

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

Смещенный порядок n -разрядного нормализованного числа вычисляется следующим образом: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2 k -1 -1).

Таким образом, порядок, принимающий значения в диапазоне от -128 до +127, преобразуется в смещенный порядок в диапазоне от 0 до 255. Смещенный порядок хранится в виде беззнакового числа, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.

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

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

Таблица 4.3. Стандартные форматы представления вещественных чисел

Пример 4.6. Представление нормализованных чисел в одинарном формате.

Проиллюстрируем, как будет храниться число 37,16 10 . При переводе в двоичное число не получается точного перевода 100101,(00101000111101011100) - дробная часть, заключенная в скобках, повторяется в периоде.

Переводим число в нормализованный вид: 0,100101(00101000111101011100) * 2 110

Представим вещественное число в 32-разрядном формате:

1. Знак числа «+», поэтому в знаковый разряд (31) заносим 0;

2. Для задания порядка выделено 8 разрядов, к истинному значению порядка, представленного в дополнительном коде, прибавляем смещение (2 7 -1)=127. Так как порядок положительный, то прямой код порядка совпадает с дополнительным, вычислим смещенный порядок: 00000110 + 01111111=10000101

Заносим полученный смещенный порядок.

3. Заносим мантиссу, при этом старший разряд мантиссы убираем (он всегда равен 1);

смещенный порядок

мантисса

В данном примере мы смогли перенести только 24 разряда, остальные были утеряны с потерей точности представления числа.

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

При их написании вместо запятой принято писать точку . Так, например, число 5 - целое, а числа 5.1 и 5.0 - вещественные.

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

1.25*10 0 = 0.125*10 1 = 0.0125*10 2 = ... ,
или так:
12.5*10 -1 = 125.0*10 -2 = 1250.0*10 -3 = ... .

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

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

Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание - в десятичной системе.

Примеры нормализованного представления:

Десятичная система Двоичная система

753.15 = 0.75315*10 3 ; -101.01 = -0.10101*2 11 (порядок 11 2 = 3 10)

0.000034 = -0.34*10 -4 ; -0.000011 = 0.11*2 -100 (порядок -100 2 = -410)

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

В качестве примера приведем характеристики форматов вещественных чисел, используемых IBM-совместимыми персональными компьютерами:

Форматы вещественных чисел Размер в байтах Примерный диапазон абсолютных значений Количество значащих десятичных цифр
Одинарный 4 10 -45 ... 10 38 7 или 8
Вещественный 6 10 -39 ... 10 38 11 или 12
Двойной 8 10 -324 ... 10 308 15 или 16
Расширенный 10 10 -4932 ... 10 4932 19 или 20

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

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

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

1. Число 6.25 10 = 110.01 2 = 0,11001

  • 2 11:

2. Число -0.125 10 = -0.0012 = -0.1*2 -10 (отрицательный порядок записан в дополнительном коде):

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

Данный рисунок отражает Правило №1: Данные (и программы) в памяти компьютера хранятся в двоичном виде, т.е. в виде цепочек ноликов и единичек.

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

Что такое дискретность?

Самый близкий ответ: «Отдельный»

Примечание: Дискретное множество состоит из отделенных друг от друга элементов. Например, песок дискретен, поскольку он состоит из отдельных песчинок. А вода или масло непрерывны (в рамках наших ощущений, поскольку отдельные молекулы мы все равно ощутить не можем)

Например, изображение строится в виде совокупности точек, т.е. дискретно.

Правило №3: множество представимых в памяти величин ограничено и конечно.

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

Целые числа в компьютере. (Формат с фиксированной запятой)

Любое вычислительное устройство (компьютер, калькулятор) может работать только с ограниченным множеством целых чисел. Посмотрите на табло калькулятора, на нем помещается 10 знаков. Самое большое положительное число, которое помещается на табло:

9

9

9

9

9

9

9

9

9

Самое большое по абсолютной величине отрицательное число:

9

9

9

9

9

9

9

9

9

Аналогично дело обстоит и в компьютере.

Например, если под целое число выделяется ячейка памяти размером в 16 битов, то самое большое положительное число будет таким:

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

В десятичной системе счисления оно равно:

2 15 -1=32767

Здесь первый бит играет роль знака числа. Ноль - признак положительного числа. Самое большое по модулю отрицательное число равно -32768.

Как получить его внутреннее представление:

1) перевести число в 32768 в двоичную систему счисления, он равно
1000000000000000 - получили прямой код.

2) инвертировать этот двойчный код, т.е. заменить нули на единицы, а единицы на нули - получили обратный код .

0111111111111111

3) Прибавить единицу к этому двоичному числу, в результате получим:

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Единица в первом бите обозначает знак «минус».

(не нужно думать, что полученный код - это «минус ноль». Этот код представляет число -32768.)

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

Если под целое число в памяти компьютера отводится N бит, то диапазон значений целых чисел: [-2 N-1 -1, 2 N -1]

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

В этом формате самое маленькое число - ноль, а самое большое число для 16-разрядной ячейки:

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

В десятичной системе счисления это 2 16 - 1 = 65535, в два раза больше по модулю, чем в представлении со знаком.

Целые числа в компьютере. (Формат с плавающей запятой)

Самое большое число у разных калькуляторов может оказаться разным. У самого простого калькулятора - 999999999. Если прибавить к нему еще единицу, то калькулятор выдаст сообщение об ошибке. А на более «умном» калькуляторе прибавление единицы приведет к такому результату:

1

е

+

0

9

Данную запись на табло понимают так: 1 x10 9 .

Такой формат записи числа называется форматом с плавающей запятой .

1

е

+

0

9

мантисса

порядок числа

В компьютере числа могу и представляться как в формате с фиксированной запятой так и в формате с плавающей запятой.

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

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

А = 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 = 1 × 2 8 - 1 = 255 10 .

Диапазон изменения целых неотрицательных чисел чисел: от 0 до 255.

Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное - 1).

Представление в компьютере положительных чисел с использованием формата "знак-величина" называется прямым кодом числа. Например, число 2002 10 = 11111010010 2 будет представлено в 16-разрядном представлении следующим образом:

0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0

Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно:

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

Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2 n - |A|.

Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике:

2 n - |А| + |А| = 0,

поскольку в компьютерной n-разрядной арифметике 2 n = 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей.

Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:

1. Модуль числа записать в прямом коде в n двоичных разрядах.

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

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

Запишем дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления:


При n-разрядном представлении отрицательного числа А в дополнительным коде старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число

Чтобы число было положительным, должно выполняться условие

|А| £ 2 n-1 .

Следовательно, максимальное значение модуля числа А в га-разрядном представлении равно:

Тогда минимальное отрицательное число равно:

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

Максимальное положительное целое число (с учетом выделения одного разряда на знак) равно:

А = 2 31 - 1 = 2 147 483 647 10 .

Минимальное отрицательное целое число равно:

А = -2 31 = - 2 147 483 648 10 .

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

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

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

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

A = m × q n 2.3

где m - мантисса числа;
q - основание системы счисления;
n - порядок числа.

Для единообразия представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию:

1/n £ |m|

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

Преобразуем десятичное число 555,55, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой:

555,55 = 0,55555 × 10 3 .

Здесь нормализованная мантисса: m = 0,55555, порядок: n = 3.

Число в формате с плавающей запятой занимает в памяти компьютера 4 (число обычной точности ) или 8 байтов (число двойной точности ). При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.

Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы.

Определим максимальное число и его точность для формата чисел обычной точности , если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака - 24 разряда:

0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
знак и порядок знак и мантисса

Максимальное значение порядка числа составит 1111111 2 = 127 10 , и, следовательно, максимальное значение числа составит:

2 127 = 1,7014118346046923173168730371588 × 10 38 .

Максимальное значение положительной мантиссы равно:

2 23 - 1 » 2 23 = 2 (10 × 2,3) » 1000 2,3 = 10 (3 × 2,3) » 10 7 .

Таким образом максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411 × 10 38 (количество значащих цифр десятичного числа в данном случае ограничено 7 разрядами).

Задания

1.26. Заполнить таблицу, записав отрицательные десятичные числа в прямом, обратном и дополнительном кодах в 16-разрядном представлении:

1.27. Определить диапазон представления целых чисел со знаком (отводится 2 байта памяти) в формате с фиксированной запятой.

1.28. Определить максимальное число и его точность для формата чисел двойной точности , если для хранения порядка и его знака отводится 11 разрядов, а для хранения мантиссы и ее знака - 53 разряда.

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

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

Таблица 4

Максимальное значение целого неотрицательного числа, которое может храниться в регистре в формате с фиксированной запятой, можно определить из формулы: 2n – 1, где n – число разрядов числа. Максимальное число при этом будет равно 28 – 1 = 25510 = 111111112и минимальное 010 = 000000002. Таким образом, диапазон изменения целых неотрицательных чисел будет находиться в пределах от 0 до 25510.

В отличие от десятичной системы в двоичной системе счисления при компьютерном представлении двоичного числа отсутствуют символы, обозначающие знак числа: положительный (+) или отрицательный (-), поэтому для представления целых чисел со знаком в двоичной системе используются два формата представления числа: формат значения числа со знаком и формат дополнительного кода. В первом случае для хранения целых чисел со знаком отводится два регистра памяти (16 бит), причем старший разряд (крайний слева) используется под знак числа: если число положительное, то в знаковый разряд записывается 0, если число отрицательное, то – 1. Например, число 53610 = 00000010000110002 будет представлено в регистрах памяти в следующем виде:

Таблица 5

а отрицательное число -53610 = 10000010000110002 в виде:

Таблица 6

Максимальное положительное число или минимальное отрицательное в формате значения числа со знаком (с учетом представления одного разряда под знак) равно 2n-1 – 1 = 216-1 – 1 = 215 – 1 = 3276710 = 1111111111111112 и диапазон чисел будет находиться в пределах от -3276710 до 32767.

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

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


1) модуль числа записать прямым кодом в n (n = 16) двоичных разрядах;

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

3) к полученному обратному коду прибавить единицу к младшему разряду.

Например, для числа -53610 в таком формате модуль будет равен 00000010000110002, обратный код – 1111110111100111, а дополнительный код – 1111110111101000.

Необходимо помнить, что дополнительный код положительного числа – само число.

Для хранения целых чисел со знаком помимо 16-разрядного компьютерного представления, когда используются два регистра памяти (такой формат числа называется также форматом коротких целых чисел со знаком), применяются форматы средних и длинных целых чисел со знаком. Для представления чисел в формате средних чисел используется четыре регистра (4 х 8 = 32 бит), а для представления чисел в формате длинных чисел – восемь регистров (8 х 8 = 64 бита). Диапазоны значений для формата средних и длинных чисел будут соответственно равны: -(231 – 1) … + 231 – 1 и -(263-1) … + 263 – 1.

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

Вещественные числа (конечные и бесконечные десятичные дроби) обрабатываются и хранятся в компьютере в формате с плавающей запятой. При таком формате представления числа положение запятой в записи может изменяться. Любое вещественное число К в формате с плавающей запятой может быть представлено в виде:

где А – мантисса числа; h – основание системы счисления; p – порядок числа.

Выражение (2.7) для десятичной системы счисления примет вид:

для двоичной -

для восьмеричной -

для шестнадцатеричной -

Такая форма представления числа также называется нормальной . С изменением порядка запятая в числе смещается, т. е. как бы плавает влево или вправо. Поэтому нормальную форму представления чисел называют формой с плавающей запятой . Десятичное число 15,5, например, в формате с плавающей запятой может быть представлено в виде: 0,155 · 102; 1,55 · 101; 15,5 · 100; 155,0 · 10-1; 1550,0 · 10-2 и т. д. Эта форма записи десятичного числа 15,5 с плавающей запятой не используется при написании компьютерных программ и вводе их в компьютер (устройства ввода компьютеров воспринимают только линейную запись данных). Исходя из этого выражение (2.7) для представления десятичных чисел и ввода их в компьютер преобразовывают к виду

где Р – порядок числа,

т. е. вместо основания системы счисления 10 пишут букву Е, вместо запятой – точку, и знак умножения не ставится. Таким образом, число 15,5 в формате с плавающей запятой и линейной записи (компьютерное представление) будет записано в виде: 0.155Е2; 1.55Е1; 15.5Е0; 155.0Е-1; 1550.0Е-2 и т.д.

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

где |А| - абсолютное значение мантиссы числа.

Условие (2.9) означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля, или, другими словами, если после запятой в мантиссе стоит не нуль, то число называется нормализованным. Так, число 15,5 в нормализованном виде (нормализованная мантисса) в форме с плавающей запятой будет выглядеть следующим образом: 0,155 · 102, т. е. нормализованная мантисса будет A = 0,155 и порядок Р = 2, или в компьютерном представлении числа 0.155Е2.

Числа в форме с плавающей запятой имеют фиксированный формат и занимают в памяти компьютера четыре (32 бит) или восемь байт (64 бит). Если число занимает в памяти компьютера 32 разряда, то это число обычной точности, если 64 разряда, то это число двойной точности. При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, мантиссы и порядка. Количество разрядов, которое отводится под порядок числа, определяет диапазон изменения чисел, а количество разрядов, отведенных для хранения мантиссы, – точность, с которой задается число.

При выполнении арифметических операций (сложение и вычитание) над числами, представленными в формате с плавающей запятой, реализуется следующий порядок действий (алгоритм) :

1) производится выравнивание порядков чисел, над которыми совершаются арифметические операции (порядок меньшего по модулю числа увеличивается до величины порядка большего по модулю числа, мантисса при этом уменьшается в такое же количество раз);

2) выполняются арифметические операции над мантиссами чисел;

3) производится нормализация полученного результата.

Практическая часть









2024 © radiocodes.ru.