Для начинающих пользователей ПК

Формат представления чисел с плавающей запятой. Представление чисел в компьютере. Представление целых и вещественных чисел в памяти компьютера Представление целых отрицательных чисел в памяти компьютера

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

Повторение: Перевод целых чисел в двоичную систему счисления:

13 10 = а 2 Аналогично:

13 10 =1101 2

1345 10 =10101000001 2


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

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

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

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

ячейка (8бит = 1байт)

машинным словом.

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

Содержимым любого разряда может быть либо 0, либо 1.

Содержимое ячейки памяти называется машинным словом. Ячейка памяти разделяется на разряды, в каждом из которых хранится разряд числа.

Например, самые современные персональные компьютеры являются 64-разрядным, то есть машинное слово и соответственно, ячейка памяти, состоит из 64 разрядов или битов .

Бит - минимальная единица измерения информации. Каждый бит может принимать значение 0 или 1. Битом также называют разряд ячейки памяти ЭВМ.

Стандартный размер наименьшей ячейки памяти равен восьми битам, то есть восьми двоичным разрядам. Совокупность из 8 битов является основной единицей представления данных – байт.

Байт (от английского byte – слог) – часть машинного слова, состоящая из 8 бит, обрабатываемая в ЭВМ как одно целое. На экране – ячейка памяти, состоящая из 8 разрядов – это байт. Младший разряд имеет порядковый номер 0, старший разряд – порядковый номер 7.

8 бит = 1 байт

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

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

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

Целые числа без знака обычно занимают в памяти один или два байта и принимают в однобайтовом формате значения от 00000000 2 до 11111111 2 , а в двухбайтовом формате - от 00000000 00000000 2 до 11111111 11111111 2 .

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

1101 2 10101000001 2

Разряд, отводимый под знак

(в этом случае +)

Недостающие до целого байта старшие разряды заполняются нулями.

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

Прямой код – это представление числа в двоичной системе счисления, при этом первый разряд отводится под знак числа. Если число положительное, то в первом разряде находится 0, если число отрицательное, в первом разряде указывается единица.

На самом деле прямой код используется почти исключительно для положительных чисел. Для записи прямого кода числа необходимо:

    Представить число в двоичной системе

    Дополнить запись числа нулями до предпоследнего старшего разряда 8-ми разрядной или 16-ти разрядной ячейки

    Заполнить старший разряд нулем или единицей в зависимости от знака числа.

Пример: число 3 10 в прямом коде однобайтного формата будет представлено в виде:


ч исло -3 10 в прямом коде однобайтного формата имеет вид:


Обратный код для положительного числа в двоичной системе счисления совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1) инвертировать , а в знаковый разряд заносится единица.

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

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

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

Алгоритм получения дополнительного кода для отрицательного числа:

1. Найти прямой код числа (перевести число в двоичную систему счисления число без знака)

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

3. К обратному коду прибавить 1

Пример: Найдем дополнительный код десятичного числа – 47 в 16-ти разрядном формате.

    Найдем двоичную запись числа 47 (прямой код).

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

Важно!

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

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

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

Практическая задание:

Задание 1. Записать прямой, обратный и дополнительный коды следующих десятичных чисел, используя 8 -разрядную ячейку:

64 10, - 120 10

Задание 2. Записать прямой, обратный и дополнительный коды следующие десятичные числа в 16-ти разрядной сетке

57 10 - 117 10 - 200 10

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

Целые числа хранятся в памяти в формате с фиксированной запятой. При таком формате представления чисел для хранения целых неотрицательных чисел отводится регистр памяти, состоящий из восьми ячеек памяти (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) производится нормализация полученного результата.

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

Назначение сервиса . Онлайн-калькулятор предназначен для представления вещественных чисел в формат с плавающей точкой.

Правила ввода чисел

  1. Числа в десятичной системе счисления могут вводиться как без дробной, так и с дробной частью (234234.455).
  2. Числа в двоичной системе счисления состоят только из цифр 0 и 1 (10100.01).
  3. Числа в шестнадцатеричной системе счисления состоят из цифр 0 ... 9 и букв A ... F .
  4. Можно также получать обратное представление кода (из шестнадцатеричной системы счисления в десятичную, 40B00000)
Пример №1 . Представить число 133,54 в форме числа с плавающей точкой.
Решение . Представим число 133.54 в нормализованном экспоненциальном виде:
1.3354*10 2 = 1.3354*exp 10 2
Число 1.3354*exp 10 2 состоит из двух частей: мантиссы M=1.3354 и экспоненты exp 10 =2
Если мантисса находится в диапазоне 1 ≤ M Представление числа в денормализованном экспоненциальном виде .
Если мантисса находится в диапазоне 0,1 ≤ M Представим число в денормализованном экспоненциальном виде: 0.13354*exp 10 3

Пример №2 . Представить двоичное число 101.10 2 в нормализованном виде, записать в 32-битом стандарте IEEE754.
Решение .
Представление двоичного числа с плавающей точкой в экспоненциальном нормализованном виде .
Сдвинем число на 2 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.011
Экспонента exp 2 =2
Преобразование двоичного нормализованного числа в 32 битный формат IEEE 754 .
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 2 + 127 = 129
Переведем экспоненту в двоичное представление.
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
01100000000000000000000 = 2 22 *0 + 2 21 *1 + 2 20 *1 + 2 19 *0 + 2 18 *0 + 2 17 *0 + 2 16 *0 + 2 15 *0 + 2 14 *0 + 2 13 *0 + 2 12 *0 + 2 11 *0 + 2 10 *0 + 2 9 *0 + 2 8 *0 + 2 7 *0 + 2 6 *0 + 2 5 *0 + 2 4 *0 + 2 3 *0 + 2 2 *0 + 2 1 *0 + 2 0 *0 = 0 + 2097152 + 1048576 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 3145728
В десятичном коде мантисса выражается числом 3145728
В результате число 101.10 представленное в IEEE 754 c одинарной точностью равно.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
2 = 0100 0000 1011 0000 0000 0000 0000 0000 2
Получаем число:
0100 0000 1011 0000 0000 0000 0000 0000 2 = 40B00000 16