Как я понимаю Java будет хранить всплывают в памяти как 32-разрядное целое число со следующими свойствами:
Это не оставляет никаких запасных битов для трех особых случаях:
Я могу догадаться, что отрицательные 0 может быть использован для хранения одного из них.
Как они представлены в памяти?
Java определяет, что числа с плавающей запятой следовать [по стандарту IEEE 754] стандарт(https://en.wikipedia.org/wiki/IEEE_floating_point).
Это как это'с хранятся:
Теперь, я выполнил ниже способ с различными двойного значения:
public static void print(double d){
System.out.println(Long.toBinaryString(Double.doubleToRawLongBits(d)));
}
Я исполнен со следующими значениями:
print(Double.NaN);
print(Double.NEGATIVE_INFINITY);
print(Double.POSITIVE_INFINITY);
print(-Double.MAX_VALUE);
print(Double.MAX_VALUE);
И получил следующие выходные данные для указанных выше значений (отформатированное для читабельности):
в
NaN: 0111111111111000000000000000000000000000000000000000000000000000
-Inf: 1111111111110000000000000000000000000000000000000000000000000000
+Inf: 0111111111110000000000000000000000000000000000000000000000000000
-Max: 1111111111101111111111111111111111111111111111111111111111111111
+Max: 0111111111101111111111111111111111111111111111111111111111111111
Википедия объясняет, что когда поле экспоненты все-бит-1, число является либо INF или NaN. Инф имеет все биты мантиссы равна нулю; NaN имеет по меньшей мере один бит в мантиссе значение 1. Знаковый бит сохраняет свое нормальное значение для inf-файл, но не имеет смысла для Нэн. Ява'ы двойной.Нань-одно конкретное значение, которое будет интерпретироваться как Нэн, но есть 2<суп>53</SUP-серфинг>&минус;3 другие.
Из здесь:
В. Как ноль, бесконечность и NaN представлены, используя IEEE 754?
&гт; А., установив все экспоненты бит-1. Положительная бесконечность =
0x7ff0000000000000 (все экспоненты бит 1, бит знака 0 и мантисса бит 0), отрицательная бесконечность = 0xfff0000000000000 (все биты экспоненты 1, В знаковый разряд 1, а все биты мантиссы 0), Нана = 0x7ff8000000000000 (все биты 1 степени, по крайней мере, один бит мантиссы). Положительный ноль = все бит 0. Отрицательный нуль = 0 все биты, кроме знакового бита равно 1.
Смотрите также документации о НЭН, положительная бесконечность и отрицательная бесконечность.
Как описано в Википедии, показатель степени при всех битов, установленных в 1 используется для определения этих чисел. Поле часть значение 0 используется для определения бесконечности (положительной или отрицательной, как установили знак), и ненулевое поле фракция определяет значение NaN.
Java использует стандарт IEEE 754 с плавающей точкой.
Большинство чисел, выраженных в знак экспоненты-мантисса формат с мантиссой, имеющей неявный ведущий 1.
Экстремальные значения показателя (все нули и все единицы поля) не использовались в качестве нормальных значений показателя. Вместо этого они используются для представления специальных случаях.
Все нули в поле экспоненты используется для представления чисел (в том числе и положительный, и отрицательный ноль), что слишком малы, чтобы представлять в обычном формате.
Все в exponenent используется для представления специальных значений. Если все биты мантиссы равны нулю, то значение плюс или минус бесконечность (знак обозначается знаком немного). В противном случае значением является Нэн.
Прежде всего мы должны узнать, какое количество представлено в качестве точки поплавка и в память дважды.
Общее число имеет вид: 1.М * 2^е.
(где m называется мантиссой, А Е-это экспонента в избытке-127)
В число с плавающей точкой
Старший бит(самый старший бит) используется как знаковый бит и бит число с 23 по 31 используется для экспоненциальной значение в виде превышения-127 и номер бита от 0 до 30 используется для хранения мантиссы.
Двойной
Старший бит(самый старший бит) используется как знаковый бит и бит число от 52 до 63 используется для экспоненциальной значение в виде превышения-127 и номер бита от 0 до используется для хранения мантиссы.
так что теперь мы в состоянии понять НАН, представительство Инфинити в float или Double.
Нана(не количество)
В представительстве Нана все экспоненты бита равны 1, а биты мантиссы может быть все что угодно и не важно, что это в float или decimal.
Бесконечность
В представление о бесконечности все экспоненты бита равны 1, а биты мантиссы равны 0 и не важно, что это в float или decimal. В положительная бесконечность - представляете, просто так же, как и выше, но бит знака равен 0, а отрицательная бесконечность - это просто такой же, но знаковый бит находится здесь 1.