- Представление чисел в ЭВМ
Лекция №6
window.status="Информатика - представление чисел" Представление чисел в ЭВМ
1. Общие сведения
При проектировании ЭВМ, создании инструментального и прикладного программного обеспечения разработчикам приходится решать вопрос о представлении в ЭВМ числовых данных. Для решения большинства прикладных задач обычно достаточно использовать целые и вещественные числа. Запись целочисленных данных в запоминающем устройстве ЭВМ не представляет затруднений: число переводится в двоичную систему и записывается в прямом коде. Диапазон представляемых чисел в этом случае ограничивается количеством выделенных для записи разрядов. Для вещественных данных обычно используются две формы записи: число с фиксированной точкой (ЧФТ) и число с плавающей точкой (ЧПТ).
Память ЭВМ построена из запоминающих элементов, обладающих двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое - единице. Таким физическим элементом представляется в памяти ЭВМ каждый разряд двоичного числа (бит). Совокупность определенного количества эти элементов служит для представление многоразрядных двоичных чисел и составляет разрядную сетку ЭВМ.
Каждая группа из 8-ми запоминающих элементов (байт) пронумерована. Номер байта называется его адресом. Определенное число последовательно расположенных байт называется словом. Для разных ЭВМ длина слова различна - два, четыре или восемь байт. (Мне думается, что это зависит от разрядности процессора).
2. Числа с фиксированной точкой
Форма записи числа с фиксированной точкой использовалась в основном на ранних этапах развития вычислительной техники. Запись числа с фиксированной точкой обычно имеет знаковый и цифровой разряды. Фиксированная точка означает, что на этапе конструирования ЭВМ было определено, сколько и какие разряды машинного слова отведены под изображение целой и дробной частей числа. Запятая в разрядной сетке может быть зафиксирована, в принципе, после любого разряда.
Рекомендуемые материалы
Пример.
Ячейка с целой и дробной частью.
Как частный случай числа с фиксированной точкой может быть рассмотрена запись целого числа (в этом случае все разряды, кроме знакового, используются для записи целой части).
Пример.
Ячейка с записью целого числа.
К достоинствам использования чисел с фиксированной точкой относятся простота выполнения арифметических операций и высокая точность изображения чисел. К недостаткам - небольшой диапазон представления чисел.
При представлении в ЭВМ чисел в естественной форме устанавливается фиксированная длина разрядной сетки. При этом распределение разрядов между целой и дробной частями остается неизменным для любых чисел. В связи с эти в информатике существует другое название естественной формы представления чисел - с фиксированной точкой (запятой).
Работая на компьютере, мы можем вводить числа с фиксированной запятой в любом виде. Так же они будут высвечиваться на экране компьютера, но перед занесением в память компьютера они преобразуются в соответствии с разрядной сеткой и хранятся либо с запятой, фиксированной после последнего разряда (целые числа), либо с запятой перед старшим разрядом дроби.
Современные ЭВМ работают в режиме с плавающей точкой, но сохранен и режим работы с фиксированной точкой, который используется преимущемтвенно для представления целых чисел.
Обычно целые числа в ЭВМ занимают один, два или четыре байта. Один, как правило, старший бит отводится под знак числа. Знак положительного числа "+" кодируется нулем, а знак отрицательного числа "-" - единицей. Целые числа без знака в двух байтовом формате могут принимать значения от 0 до 216-1 (до 65535), а со знаком "-" от -215 до 215-1, то есть от -32768 до 32767.
Во всех разрядах всегда должно быть что-то записано, даже если это "незначащий" ноль. Число распологается так, что его самый младший двоичный разряд записывается в крайний првый бит разрядной сетки. Например, десятичное число 19 (100112) в 16-разрядной сетке записывается так:
Достоинством естественной формы являются простота и наглядность представления чисел, простота алгоритмов реализации операций, а следовательно, простота устройств и высокая скорость выполнения операций.
Существенным недостатком машин с фиксированной точкой является конечный диапазон представления величин. Может показаться, что это ограничивает вычислительные возможности ЭВМ. Но на самом деле короткая длина слова приводит только к снижению быстродействия машин: обработка больших чисел ведется последовательно-параллельным способом, сами числа представляются несколькими машинными словами, и для выполнения операций над ними необходимо составлять специальные программы. Поэтому если результат вычислений в естественной форме выходит за допустимые пределы, то в современных компьютерах производиться автоматический переход к представлению данных в экспотанциальной форме (но только если это оговорено программой).
Применение
· Для ускорения вычислений в местах, где не требуется высокая точность. В большинстве современных процессоров ФЗ аппаратно не реализована, но даже программная ФЗ очень быстра — поэтому она применяется в разного рода игровых движках, растеризаторах[1] и т. д. Например, движок Doom для измерения расстояний использует фиксированную запятую 16,16, для измерения углов — 360°=65536.
· Чтобы обеспечить минимальную поддержку дробных чисел на целочисленном процессоре — микроконтроллера, мобильного телефона, приставок вплоть до Playstation и т. д. Если не решаются некорректные задачи и СЛАУ высокого порядка, фиксированной запятой зачастую достаточно — важно только подобрать подходящую цену (вес) младшего разряда для каждой из величин.
· Для записи чисел, которые по своей природе имеют постоянную абсолютную погрешность: координаты в программах вёрстки, денежные суммы. Например, файлы метрики шрифтов TeX используют 32-битный знаковый тип с фиксированной запятой (12,20).
o Кроме того, фиксированная запятая ведёт себя абсолютно предсказуемо — при подсчёте денег это позволяет наладить разные виды округления, а в играх — наиболее простой способ реализовать мультиплеер и запись повторов.
Задания
1. Определите максимальные значения целых чисел со знаком и без знака при их 8- и 32-разрядном представлении.
8 разрядов | 32 разряда | |
со знаком | 27-1=127 | 231-1=2,15x109 |
без знака | 28-1=255 | 232-1=4,29x109 |
2. Представьте следующие числа в 16-разрядной сетке в формате с фиксированой точкой: 25, 801, -610.
|
|
|
3. Числа с плавающей точкой (запятой)
Неудобство представления чисел в форме с фиксированной точкой проявляется при решении задач, в которых фигурируют как очень малые так и очень большие числа. В конкретных физических, математических и других задачах диапазон изменения величин может составлять, например от 10-30 до 1030. Можно убедиться, что в представлении с фиксированной запятой понадобились бы двоичные слова длинной около 256 бит (32 байт), по 128 бит на целую и дробную части. Однако работа ЭВМ с операндами такой длины была бы крайне неэффективной.
Точность числа определяется не его длиной, а количеством верных значащих цифр.
Например, мы хотим измерить длину отрезка линейкой с сантиметровыми делениями. Отрезок не совпадает с делениями точно - его длина между 47 и 47,5 см. На глазок прикидываем, что это 47,2 см (472 мм). Ясно, что в каких единицах ни записать длину отрезка: 472000микрон 472мм. 0,000472км - точных цифр только две: 47 при точности измерения до 1 см (ведь линейка-то сантиметровая).
Точность результата вычисления выражений, содержащих несколько чисел, определяется, как правило, точностью числа имеющего наименьшее количество верных значащих цифр. Поэтому в практических расчетах редко используют более трех значащих цифр, соответствующим образом округляя промежуточные результаты. Ясно, что для хранения в памяти ЭВМ чисел с небольшим числом значащих цифр целесообразно представлять их в экспоненциальной форме. В приведенном примере это представление может иметь вид:
4,72 х 105; 472 x 103; 4720 x 102микрон
или
4,72 х 10-4; 47,2 x 10-5;472 x 10-6км.
Из этого примера также видно, что положение запятой может изменяться. Поэтому в информатике представление в ЭВМ числа в экспотенциальной форме называются представлением с плавающей точкой (запятой).
Представление чисел в форме с плавающей точкой очень удобно для решения научных и инженерных задач. Нормализованное представление чисел не только позволяет сохранить в разрядной сетке большое количество значащих цифр, но также упрощает действие над порядками и мантисами.
Для представления чисел с плавающей точкой (ЧПТ) используется полулогарифмическая форма записи числа:
N = ± mq ± p
где q- основание системы счисления, p - порядок числа, m - мантисса числа N.
Положение точки определяется значением порядка p. С изменением порядка точка перемещается (плавает) влево или вправо.
Пример.
12510=12.5*101=1.25*102=0.125*103=0.0125*104=...
Для установления однозначности при записи чисел принята нормализованная форма записи числа. Мантисса нормализованного числа может изменяться в диапазоне: 1/q ≤ | m | < 1. Таким образом в нормализованных числах цифра после точки должна быть значащей.
Пример.
Для представления чисел в машинном слове выделяют группы разрядов для изображения мантиссы, порядка, знака числа и знака порядка:
а) представление чисел в формате полуслова
б) представление чисел в формате слова
Наиболее типично представление ЧПТ в формате слова (32 разряда).
Пример.
Число А=-3.510=-11.12=-0.111·1010
Максимальным числом представимым в формате слова будет A=(0.1111...1·101111111)2(1·2127)10.
Таким образом числа с плавающей точкой позволяют увеличить диапазон обрабатываемых чисел, но при этом точность изображения чисел определяется только разрядами мантиссы и уменьшается по сравнению с числами с фиксированной точкой. При записи числа в формате слова диапазон представимых чисел будет от -1·2127 до 1·2127 (21271038), а точность определяться мантиссой, состоящей из 23 разрядов. Точность может быть повышена путем увеличения количества разрядов мантиссы. Это реализуется путем представления чисел с так называемой двойной точностью (используется формат двойного слова):
Как компьютер выполняет арифметические действия над нормализованными числами?
К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ.
Сложение и вычитание
При сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.
В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу. |
В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу.
Пример 1. Сложить двоичные нормализованные числа 0.10111 . 2–1 и 0.11011 . 210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо:
Пример 2. Выполнить вычитание двоичных нормализованных чисел 0.10101 . 210 и 0.11101 . 21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:
Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101 . 20.
Умножение
При умножении двух нормализованных чисел их порядки складываются, а мантиссы перемножаются. |
Пример 3. Выполнить умножение двоичных нормализованных чисел:
В лекции "Vantage Team Builder" также много полезной информации.
(0.11101 . 2101) . (0.1001 . 211) = (0.11101 . 0.1001) . 2(101+11) = 0.100000101 . 21000.
Деление
При делении двух нормализованных чисел из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случае необходимости полученный результат нормализуется. |
Пример 4. Выполнить деление двоичных нормализованных чисел:
0.1111 . 2100 : 0.101 . 211 = (0.1111 : 0.101) . 2(100–11) = 1.1 . 21 = 0.11 . 210.
Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического.