Я должен получить входные данные в float
как + NaN или -NaN и преобразовать в другую искусственную плавающую форму, которая называется tinyfp
(1 знаковый бит, 3 экспонентных бита, 4 дробных бита) для одного вопроса,
или получите ввод в tinyfp (каждый из которых представляет + NaN или -NaN) и ответьте либо + NaN, либо -NaN
Вопрос специально задает
+ NaN и -NaN в float должны быть преобразованы в соответствующие + NaN и -NaN в tinyfp, соответственно.
и
+ NaN и -NaN в tinyfp должны быть преобразованы в соответствующие + NaN и -NaN в float, соответственно.
Первая проблема заключается в том, что я не могу сравнивать NaN ни с чем (даже с самим собой), хотя я могу определить, является ли входное значение NaN, я не могу различить + NaN и -NaN.
Аналогично второй проблеме, когда я хочу ответить либо + NaN, либо -NaN, и 0.0 / 0.0, и -0.0 / 0.0 представлены как -NaN, поэтому я не могу ничего ответить как + NaN.
Я пытался if( input == 0.0/0.0)
или (input == -0.0/0.0)
, и они не работают.
Я могу попробовать if(input != input)
, но тогда я не могу различить + NaN и -NaN.
Для второй проблемы, я попытался return 0.0/0.0
и return -0.0/0.0
, но оба в конечном итоге отвечали как -NaN. (хотя каким-то образом я могу получить входные данные как в Nan, так и в -nan)
Итак, вопрос в том, как я могу проверить, является ли ввод + NaN или -NaN, и как мне назначить + NaN и -NaN по-разному, когда я хочу ответить как NaN?
Мне не разрешено использовать любой заголовок, кроме stdio.h +, и я также не могу использовать формат double
- только float
разрешено