Представление чисел с фиксированной точкой в компьютере
Представление чисел в формате с фиксированной запятой. Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а «запятая» «находится» справа после младшего разряда, то есть вне разрядной сетки.
Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Например, число А2 = = 111100002 будет храниться в ячейке памяти следующим образом:
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы. Для 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 = 25510.
Диапазон изменения целых неотрицательных чисел чисел: от 0 до 255.
Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное — 1).
Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Например, число 200210 = 111110100102 будет представлено в 16-разрядном представлении следующим образом:
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно:
Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие.
Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2 n — |A|.
Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике:
поскольку в компьютерной n-разрядной арифметике 2 n = 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей.
Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:
1. Модуль числа записать в прямом коде в n двоичных разрядах.
2. Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы).
3. К полученному обратному коду прибавить единицу.
Запишем дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления:
При n-разрядном представлении отрицательного числа А в дополнительным коде старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число
Чтобы число было положительным, должно выполняться условие
Следовательно, максимальное значение модуля числа А в га-разрядном представлении равно:
Тогда минимальное отрицательное число равно:
Определим диапазон чисел, которые могут храниться в оперативной памяти в формате длинных целых чисел со знаком (для хранения таких чисел отводится четыре ячейки памяти — 32 бита).
Максимальное положительное целое число (с учетом выделения одного разряда на знак) равно:
А = 2 31 — 1 = 2 147 483 64710.
Минимальное отрицательное целое число равно:
А = -2 31 = — 2 147 483 64810.
Достоинствами представления чисел в формате с фиксированной запятой являются простота и наглядность представления чисел, а также простота алгоритмов реализации арифметических операций.
Недостатком представления чисел в формате с фиксированной запятой является небольшой диапазон представления величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа.
Представление чисел в формате с плавающей запятой. Вещественные числа хранятся и обрабатываются в компьютере в формате с плавающей запятой. В этом случае положение запятой в записи числа может изменяться.
Формат чисел с плавающей запятой базируется на экспоненциальной форме записи, в которой может быть представлено любое число. Так число А может быть представлено в виде:
A = m × q n | 2.3 |
где m — мантисса числа;
q — основание системы счисления;
n — порядок числа.
Для единообразия представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию:
Здесь нормализованная мантисса: 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 |
знак и порядок | знак и мантисса |
Максимальное значение порядка числа составит 11111112 = 12710, и, следовательно, максимальное значение числа составит:
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-разрядном представлении:
Десятичные числа | Прямой код | Обратный код | Дополнительный код |
-50 | |||
-500 |
1.27. Определить диапазон представления целых чисел со знаком (отводится 2 байта памяти) в формате с фиксированной запятой.
1.28. Определить максимальное число и его точность для формата чисел двойной точности, если для хранения порядка и его знака отводится 11 разрядов, а для хранения мантиссы и ее знака — 53 разряда.
Задание «Диапазон хранения целых чисел со знаком и больших целых чисел со знаком»
Определить диапазон чисел, которые могут храниться в оперативной памяти в формате:
• целых чисел со знаком,
• больших целых чисел со знаком.
а) Максимальное положительное целое число в формате целых чисел со знаком равно:
Минимальное отрицательное целое число равно
б) Максимальное положительное целое число в формате больших целых чисел со знаком равно
А10 = 2 31 — 1 = 2 147 483 64710.
Минимальное отрицательное целое число равно
А10 = -2 31 = -2 147 483 64810.
Следующая страница Дополнительный код. Задание «Дополнительный код числа»
Cкачать материалы урока
Представление чисел с фиксированной и плавающей запятой
В вычислительных машинах применяются две формы представления двоичных чисел:
· естественная форма или форма с фиксированной запятой(точкой);
· нормальная форма или форма с плавающей запятой(точкой).
В форме представления с фиксированной запятойвсе числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной.
Например: в десятичной системе счисления имеется 5 разрядов в целой части числа (до запятой) и 5 разрядов в дробной части числа (после запятой); числа, записанные в такую разрядную сетку, имеют вид:
+00721,35500; +00000,000328; -10301,20260.
Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и поэтому чаще всего не приемлема при вычислениях. Диапазон значащих чисел n всистеме счисления с основанием Р при наличии т разрядов в целой части и s разрядов в дробной части числа (без учета знака числа) будет:
P -s ≤ N ≤P m – P -s .
Например, при Р = 2, т = 10 и s = 6 числа изменяются в диапазоне:
Если в результате операции получится число, выходящее за допустимый диапазон, происходит переполнение разрядной сетки, и дальнейшие вычисления теряют смысл. В современных ЭВМ естественная форма представления используется как вспомогательная и только для целых чисел.
В форме представления с плавающей запятойкаждое число изображается в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая – порядком,причем абсолютная величина мантиссы должна быть меньше 1, а порядок – целым числом. В общем виде, число в форме с плавающей запятой может быть представлено так:
N = ±M·P ±r ,
+0,721355·10 3 ; +0,328·10 -3 ; -0,103012026·10 5 .
Нормальная форма представления имеет огромный диапазон отображения чисел и является основной в современных компьютерах. Так, диапазон значащих чисел в системе счисления с основанием Р при наличии т разрядов у мантиссы и s разрядов у порядка (без учета знаковых разрядов порядка и мантиссы) будет:
Пример. При Р = 2, m = 22 и s = 10 диапазон чисел простирается примерно от 10 -300 до 10 300 . Для сравнения: количество секунд, которые прошли с момента образования планеты Земля, составляет всего 10 18 .
Следует заметить, что все числа с плавающей запятой хранятся в машине в так называемом нормализованном виде. Нормализованным называют такое число, в старшем разряде мантиссы которого стоит единица.
Выполнение операций над числами с плавающей запятой
При сложении (вычитании)чисел с одинаковыми порядками их мантиссы складываются (вычитаются), а результату присваивается порядок, общий для исходных чисел. Если порядки исходных чисел разные, то сначала эти порядки выравниваются (число с меньшим порядком приводится к числу с большим порядком), затем выполняется операция сложения (вычитания) порядков. Если при выполнении операции сложения мантисс возникает переполнение, то сумма мантисс сдвигается вправо на один разряд, а порядок суммы увеличивается на 1.
При умножениичисел с плавающей запятой их мантиссы перемножаются, а порядки складываются.
При делениичисла с плавающей запятой мантисса делимого делится на мантиссу делителя, а для получения порядка частного из порядка делимого вычитается порядок делителя. При этом если мантисса делимого больше мантиссы делителя, то мантисса частного окажется больше 1 (происходит переполнение) и ее следует сдвинуть на один разряд вправо, одновременно увеличив на единицу порядок частного.
Алгоритм получения дополнительного кода отрицательного числа.
- модуль отрицательного числа представить прямым кодом в k двоичных разрядах;
- значение всех бит инвертировать:все нули заменить на единицы, а единицы на нули(таким образом, получается k-разрядный обратный код исходного числа);
- к полученному обратному коду прибавить единицу.
Пример:
Получим 8-разрядный дополнительный код числа -52:
Можно заметить, что представление целого числа не очень удобно изображать в двоичной системе, поэтому часто используют шестнадцатеричное представление:
Практические примеры
В числах одинарной точности:
на знак отводится 1 бит, на экспоненту — 8, на мантиссу — 23.
В нормализованных числах старший бит всегда равен единице и он не записывается в число, поэтому реально мантисса для таких чисел имеет размер 24 бита.
К экспоненте перед записью добавляется число 127.
Для начала запишем знак числа. Если число положительное — запишем в знак 0, если отрицательное — 1 и отбросим знак числа для дальнейших вычислений.
Далее приведем число к такому виду, что перед запятой в двоичной записи у него только единица (если изначальное число 0 — оно имеет специальную запись 0 00000000 00000000000000000000000₂)
Для этого либо умножаем число на 2 пока оно не станет >= 1, если оно меньше 1, либо делим на 2 пока оно все еще >= 1.
Если умножаем — в экспоненту пойдет отрицательное число умножений.
Если делим — положительное число делений.
Потом получившееся число умножаем на 2²³ (8388608), округляем до ближайшего целого и отбрасываем старший бит. Результат записываем в мантиссу.
Пример 1
0,5 — положительное, в знак 0
0,5 < 1, умножаем его на 2, пока оно не станет >= 1. получилось 1 за 1 умножение. в экспоненту пойдет -1
мантисса = 1*8388608 = 100000000000000000000000₂
отбрасываем старший бит. получается 000000000000000000000000₂
записываем:
знак = 0 (число положительное)
в экспоненте 127 — 1 = 126 = 01111110₂
в мантиссе 000000000000000000000000₂
(без старшей единицы),получаем:
0 01111110 00000000000000000000000₂
Пример 2
25,12 положительное. в знак 0
25,12 делим на 2, пока >= 1. получаем 1,57 за 4 деления (если поделим еще раз, будет уже 0,785 < 1). в экспоненту пойдет +4.
1,57 * 8388608 = 13170114,56. округляем, получаем 13170115 = 110010001111010111000011₂
отбрасываем старший бит, получаем 10010001111010111000011₂
записываем
знак = 0
экспонента = 127+4 = 10000011₂
мантисса = 10010001111010111000011₂
получаем:
0 10000011 10010001111010111000011₂
-25,12 отрицательное, записываем в знак единицу, далее отбрасываем знак числа и считаем ровно как в предыдущем примере
1 10000011 10010001111010111000011₂
Пример 3
-3456,1. в знак единица, отбрасываем знак.
3456,1 > 1. делим на 2¹¹. получаем 1.687548828125, в экспоненту 11
1.687548828125 * 8388608 = 14156185.6.
округляем. 14156186 = 1101 1000 0000 0001 1001 1010₂, отбрасываем старшую единицу: 101 1000 0000 0001 1001 1010₂
знак 1
экспонента 127 + 11 = 10001010₂
мантисса 10110000000000110011010₂
результат 1 10001010 10110000000000110011010₂
Больше интересных статей читай по хэштегу #article@physics_math в группе Physics.Math.Code.Books Помощь и репетиторов по физике, высшей математике, программированию, информатике, иностранным языкам Вы найдете в Репетитор | IT mentor Наш канал в telegram : @physics_lib
Представление чисел с фиксированной точкой в компьютере
А = mАPА
Для записи числа отводятся k+1 разряд для фиксации порядка со своим знаком и n+1 разряд для мантисы.
- Перевести число из p-ичной системы счисления в двоичную;
- представить двоичное число в нормализованной экспоненциальной форме;
- рассчитать смещённый порядок числа;
- разместить знак, порядок и мантиссу в соответствующие разряды сетки.