- •1.1 Базовые термины и определения#
- •1.2 Системы счисления
- •1.2.1 Двоичная арифметика&
- •1.3 Представление чисел в компьютере
- •1.3.1 Представление целых чисел
- •1.3.2 Целые числа со знаком
- •1.3.2.1 Представление "знак-и-число"
- •1.3.2.2 Дополнение до единицы
- •1.3.2.3 Дополнение до двух
- •1.3.2.4 Смещение на N
- •1.3.2.5 Сравнительная таблица представления целых чисел$
- •1.3.3 Числа с плавающей точкой. Стандарт IEEE-754
- •1.3.3.1 Смещение степени
- •1.3.3.2 Мантисса
- •1.3.3.3 Числа с плавающей запятой одинарной точности, 32 бита
Десятичное |
Беззнаковое |
Знак-и-число |
Дополнение |
Дополнение |
Смещение на |
число |
целое |
|
до единицы |
до двух |
7 |
|
|
|
|
|
|
-3 |
нет |
1011 |
1100 |
1101 |
0100 |
|
|
|
|
|
|
-4 |
нет |
1100 |
1011 |
1100 |
0011 |
|
|
|
|
|
|
-5 |
нет |
1101 |
1010 |
1011 |
0010 |
|
|
|
|
|
|
-6 |
нет |
1110 |
1001 |
1010 |
0001 |
|
|
|
|
|
|
-7 |
нет |
1111 |
1000 |
1001 |
0000 |
|
|
|
|
|
|
-8 |
нет |
нет |
нет |
1000 |
нет |
|
|
|
|
|
|
1.3.3 Числа с плавающей точкой. Стандарт IEEE-754
Числа с плавающей точкой представлены в двух частях: двоичная дробь и двоичная степень.
Двоичные дроби: |
|
|
|
|
|
|
Обычная дробь 0.527 представляется как сумма чисел: |
5 |
|
2 |
|
7 |
со |
10 |
100 |
1000 |
знаменателями, представляющими возрастающие степени числа 10. В двоичной дроби для знаменателей используется степень числа два, при этом двоичная дробь 0.101 представляется
в виде: |
1 |
|
0 |
|
1 |
, что в десятичной системе соответствует: |
0.5 0.0 0.125=0.625 . |
2 |
4 |
8 |
Многие дроби, типа 1/3, не могут быть точно представлены в десятичной записи, а также в двоичной записи. Действительно, единственные дроби, которые могут быть представлены точно — это комбинации множителей, таких как 1/2. Следовательно, 3/4 и 7/8 могут быть представлены в точности двоичной дробью, но 1/3 и 2/5 таким образом не могут быть представлены.
Для того чтобы представить число с плавающей точкой в машинной памяти, для размещения двоичной дроби зарезервированы некоторое число битов (число которых определяется системой). Дополнительные биты предназначены для хранения значения показателя. Фактическое значение числа представляет собой двоичную дробь с множителем 2, обозначающим показатель. Умножение числа с плавающей точкой, скажем на 4, увеличивает степень числа на 2 и оставляет неизменной двоичную дробь. Умножение числа на значение, отличное от степени 2, изменяет двоичную дробь и, если необходимо, показатель степени.
Стандарт IEEE для арифметики чисел с плавающей запятой (IEEE Standard for Binary Floating-Point Arithmetic (IEEE 754)) – наиболее широко используемый при операциях с плавающей запятой стандарт, ему следует большинство процессоров. Этот стандарт устанавливает требования к представлению чисел с плавающей запятой (включая ±0 и денормализованные числа) и специальных значений (бесконечность и не-число (NAN)), а также включает указания по выполнению операций с этими числами.
Двоичные числа с плавающей запятой хранятся в формате "знак-и-число", как показано ниже:
Здесь старший бит является знаковым битом, экспонента – это смещённая степень, а мантисса – это значение мантиссы без старшего бита мантиссы.
1.3.3.1 Смещение степени
Значение степени числа смещено на 2e − 1 − 1. Смещение производится, т.к. в экспоненте должны хранится числа со знаком, чтобы представить должным образом как большие числа, так и достаточно малые (т.е. отрицательные степени).
Например, чтобы представить число в 17-й степени, записывается экспонента 17 + 2e − 1 − 1.
1.3.3.2 Мантисса
Старший бит мантиссы определяется значением экспоненты.
Если 0 < экспонента < 2e − 1, то старший бит мантиссы равен 1, число в таком случае называется нормализованным.
Если экспонента равна 0, то старший бит мантиссы равен нулю, а число называется денормализованным.
Специальные случаи:
1.Если экспонента равна 0 и мантисса равна 0, значение числа ±0 (в зависимости от знакового бита)
2.Если экспонента равна 2e − 1 и мантисса равна 0, число равно ±бесконечности (в зависимости от знакового бита)
3.Если экспонента равна 2e − 1, а мантисса НЕ равна 0, то в памяти записано не-число (NAN, not-a-number).
1.3.3.3 Числа с плавающей запятой одинарной точности, 32 бита
Числа с плавающей запятой одинарной точности хранятся следующим образом:
Степень числа смещается на 28 − 1 − 1 = 127 перед записью в память, таким образом, стандартом предусматривается возможный диапазон степеней от −126 до +127. Степень -127 смещается до значения экспоненты 0, но данное значение зарезервировано для представление денормализованных чисел или нуля. Степень +128 смещается до значения 255, но числа с такой экспонентой – это бесконечность или не-числа.
Приведём пример – запишем число −118.625, используя стандарт IEEE 754.
1.Определим знак, экспоненту и мантиссу. Т.к. число отрицательное, знаковый бит установим в "1".
2.Запишем модуль числа в двоичном виде, получим 1110110.101.
3.Запишем число в представлении мантисса × 2степень, так чтобы слева от точки осталось только одно число: 1110110.101 = 1.110110101 × 26. Это нормализованное число с плавающей запятой. Мантисса находится справа от разделителя целой и
дробной части. Значение мантиссы запишем, начиная с её старшего бита, а оставшееся место заполним нулями. Получим 11011010100000000000000.
4.Степень числа равна шести, её надо преобразовать в двоичное число (110) и сместить на 127: 6 + 127 = 133. В двоичном виде это даст 10000101.
Таким образом, получим следующее представление: