Прежде всего, мы должны узнать, как число представлено в памяти как число с плавающей запятой и удвоение.
Общее число имеет вид: 1.M * 2 ^ e.
(где M называется мантиссой, а e - экспонента в избытке-127)
С плавающей запятой
MSB (старший значащий бит) используется как знаковый бит, а номер бита от 23 до 31 используется для экспоненциального значения в форме избытка-127, а номер бита от 0 до 30 используется для хранения мантиссы.
В двойном формате
MSB (старший значащий бит) используется как знаковый бит, а номер бита от 52 до 63 используется для экспоненциального значения в форме избыточного 127, а номер бита от 0 до используется для хранения мантиссы.
так что теперь мы можем понять представление NaN, Infinity в float или double.
NaN (не число)
В представлении NaN все биты экспоненты равны 1, а биты Мантиссы могут быть любыми, и не имеет значения, является ли это число с плавающей запятой или десятичным.
Бесконечность
В представлении Бесконечности все биты экспоненты равны 1, а биты Мантиссы равны 0, и не имеет значения, является ли это число с плавающей запятой или десятичное. положительная бесконечность представлена таким же образом, как указано выше, но бит знака равен 0, а отрицательная бесконечность также представлена тем же самым, но бит знака здесь равен 1.
person
Rahul Dhawan
schedule
15.02.2017
0xfff0000000000000L=-Infinity
,0x7ff0000000000000L=+Infinity
и0x7ff8000000000000L=NaN
. (Это значения для double) - person SomeJavaGuy   schedule 22.03.2016