NaN - это не бесконечность, это сокращение от Not a Number, то есть "не число", неопределенное значение. NaN возникает, например, при делении бесконечности на бесконечность. Что касается хранения чисел с плавающей точкой, это действительно знак мантисса и экспонента. Обычно все делается по стандарту IEEE 754, так вот в случае 32-битных чисел это 1 бит на знак, 8 на экспоненту и 23 на мантиссу. На самом деле, мантисса имеет 24 бита, просто первый автоматически считается равным единице. Причем если экспонента равна 0x00 или 0xFF, то это особые значения. 0x00 означает либо +-0, если мантисса тоже 0x00, либо числа, близкие к 0, и в этом случае первый бит мантиссы принимается за 0, а не за 1, как обычно. Если экспонента имеет значение 0xFF, то это означает бесконечность при нулевой мантиссе и NaN в любом другом случае.
Pavlus, он чем-то от if отличается? Мнe они устраивают. Только если можно без него обойтись, то зачем его использовать, если он используется десятки тысяч раз!
Pavlus, сомниваюсь, что отличается. Тоже сравнение будет. Не пойму как твой илгоритм работает без условного оператора. Kогда используется это " операция? Ниразу не использовал. Может ею можно что-то ускорить.
DDDEN!SSS, это исключающее ИЛИ. Возвращает 1 только если есть один 1, в других случаях (1 1, 0 0) возвращает 0. Думаю в конструкцие иф-елсе используется безусловный переход для выполнения блока операций, а в тернарном операторе просто присваивается значение регистру, после чего содержимое регистра копируется в переменную. Или сразу в переменную.
В ассемблере часто встречается такая инструкция (пишу в Java): eax "= eax, то есть XOR с самим собой. Что она делает? Она обнуляет регистр, потому что там, где был 0, он так и останется, а 1 и 1 уничтожатся.
6 авг 2010 в 21:43
Что касается хранения чисел с плавающей точкой, это действительно знак мантисса и экспонента. Обычно все делается по стандарту IEEE 754, так вот в случае 32-битных чисел это 1 бит на знак, 8 на экспоненту и 23 на мантиссу. На самом деле, мантисса имеет 24 бита, просто первый автоматически считается равным единице. Причем если экспонента равна 0x00 или 0xFF, то это особые значения. 0x00 означает либо +-0, если мантисса тоже 0x00, либо числа, близкие к 0, и в этом случае первый бит мантиссы принимается за 0, а не за 1, как обычно. Если экспонента имеет значение 0xFF, то это означает бесконечность при нулевой мантиссе и NaN в любом другом случае.