Число с плавающей запятой: что это? Просто объяснил с примерами
Видео по теме: (May 2024).
В этом практическом совете мы покажем вам, что такое число с плавающей запятой и как оно отличается от числа с фиксированной запятой.
Число с плавающей запятой: что это?
В информатике число с плавающей запятой часто используется для измерения устройств, которые должны работать с определенной точностью.
- Число с плавающей запятой (или «число с плавающей запятой») представляет собой представление числа с использованием экспоненциальной записи. В исключительных случаях это работает только приблизительно. Вы также можете представить число 1230000 с номером 1, 23 ⋅ 10⁶.
- 1.23 называется "Мантисса". 10 - это «база», а 6 - «показатель степени». Кстати, знак можно добавить и к мантиссе. Тем не менее, вы также можете применить все это к двойной системе. Вы также можете представить число 10101100 с номером 1.0101100 ⋅ 2⁷. В компьютере хранятся только знак, мантисса и показатель степени.
- Компьютеры обычно перемещают запятую вперед и назад, пока перед запятой не появится только 1. Тогда ПК должен только сохранить десятичные разряды мантиссы и экспоненты.
- Чтобы показатель степени мог быть сохранен как положительное число, добавляется фиксированное число, так называемое смещение. Наименьший возможный показатель степени перед десятичной точкой (- смещение) сохраняется как 0.
- В отличие от числа с фиксированной запятой, запятая не находится в фиксированной точке числа с плавающей запятой.
Half, Float & Double - Общее кодирование чисел с плавающей точкой
Вы, конечно, сталкивались с этими тремя терминами, особенно при программировании с Arduino. Это стандартизированные представления.
- Тип данных "половина" является 16-битным числом. Крайний левый бит отвечает за знак. Показатель степени имеет 5 битов, а мантисса 10. Используемое смещение - 15. Поскольку первый бит мантиссы (почти) всегда равен 1, он не сохраняется.
- Тип данных «float» (или «single») - это 32-разрядное число. Здесь тоже немного используется для знака. Однако показатель степени имеет 8 бит (смещение = 127), а мантисса - 23.
- Тип данных "double" также использует бит для знака. Здесь, однако, показатель степени имеет 11 битов (смещение = 1023), а у мантиссы даже 52 бита. Всего это 64 бита, то есть 8 байтов.
- В дополнение к этим трем общим типам данных существует еще много других. Тем не менее, они в основном не используются, потому что точность половин, float и double уже достаточно хороша.
Преобразование десятичных чисел в числа с плавающей запятой - как это работает
Наконец, мы хотели бы показать вам, как вы можете преобразовать нормальное десятичное число в число с плавающей запятой.
- В этом примере мы используем десятичное число 18.4. Число перед десятичной запятой сначала передается в двойную систему. В результате вы должны получить (10010) ₂.
- Затем вы должны конвертировать 0, 4. Сначала умножьте 0, 4 на 2. В результате вы получите 0, 8. Запишите номер перед запятой. В этом случае это 0. Затем умножьте 0, 8 на 2. На этот раз вы получите 1, 6 в качестве результата. Запишите 1 и продолжайте вычислять с 0, 6. Через некоторое время вы заметите, что шаблон повторяется (в этом примере). Наконец, запишите все числа сверху вниз: 011001100110 ...
- Затем сложите числа вместе: Также добавьте (⋅ 2⁰), чтобы получить 10010.01100110 ... ⋅ 2⁰. Затем перемещайте запятую до тех пор, пока не будет только 1 перед десятичной запятой, а также измените мощность соответствующим образом. В результате вы должны получить 1.001001100110 ... ⋅ 2⁴, поскольку вы переместили десятичную точку на 4 позиции влево. Этот шаг также называется «нормализация».
- В этом примере мы используем тип данных «float». Поэтому добавьте соответствующее значение смещения к вашей экспоненте. Вы также должны преобразовать результат вычисления 4 + 127 = 131 в двоичное число. Число 131 - это число 10000011 в двойной системе.
- Теперь вы можете записать готовое число с плавающей запятой. Сначала напишите бит для знака. Поскольку это положительное число, первый бит равен 0. Тогда вам нужно написать 131. Все это идеально подходит в этом случае, так как для этого числа требуется 8 бит, а для поплавка доступно 8 бит. Наконец, вы должны записать первые 23 бита мантиссы, так как у мантиссы есть 23 бита, доступных для поплавка.
- Таким образом, ваш законченный номер с плавающей запятой должен быть номером 01000001100100110011001100110011. Немного понятнее число 0 | 10000011 | 00100110011001100110011.
Преобразовать число с плавающей запятой в десятичное число - вот как
Наконец, мы хотели бы показать вам, как вы можете снова преобразовать число с плавающей запятой в десятичное число. Для этого возьмем номер 1000001100100110011001100110011.
- Сначала заполняйте число (спереди) нулями, пока не получите 16-, 32- или 64-разрядное число. В этом случае это 01000001100100110011001100110011.
- Первая цифра обозначает знак. Так что наш номер положительный.
- Затем запишите следующие (в данном случае) 8 цифр и вычтите смещение. (10000011) ₂ = 131 → 131 - 127 = 4 → Значит, есть «⁴ 2⁴» сзади.
- Теперь напишите «1», а затем все оставшиеся цифры, а также «⁴ 2⁴»: 1.00100110011001100110011 ⋅ 2⋅
- Затем переместите запятую на 4 позиции вправо, чтобы можно было опустить «⋅ 2⁴»: 10010.0110011001100110011
- Затем преобразуйте 10010 в целое число как обычно. Вы получаете 18.
- Теперь вам нужно конвертировать десятичные знаки. Первая цифра после запятой имеет значение 1: 2¹, вторая цифра 1: 2² и т. Д. Добавьте значения, и число перед запятой даст вам номер 18.3999996185302734375.
В следующем практическом совете мы покажем вам, как вы можете конвертировать буквы ASCII в двоичные числа.