Я пишу некоторый код в Intel Intrinsics и сделал это:
#include <iostream>
#include <xmmintrin.h>
float data[4];
__m128 val1 = _mm_set_ps1(2);
__m128 val2 = _mm_set_ps1(1);
val1 = _mm_cmpgt_ps(val1, val2);
_mm_store_ps(data, val1);
std::cout << std::hex << data[0];
Я пытаюсь получить шестнадцатеричное значение «true» в SSE (то есть -nan), но продолжаю получать-nan как «шестнадцатеричное значение» всякий раз, когда я пытаюсь напечатать шестнадцатеричное значение -nan.
Я также пытался использовать std :: oct и std :: dec, и ни один из них не работал.
Я также попытался сравнить 0xFFFFFFFF и data [0] в разных комбинациях и получил это:
float data[4];
__m128 val1 = _mm_set_ps1(2);
__m128 val2 = _mm_set_ps1(1);
val1 = _mm_cmpgt_ps(val1, val2);
_mm_store_ps(data, val1);
float f = 0xFFFFFFFF;
float g = 0xFFFFFFFF;
std::cout << std::dec << (data[0] == f) << "\n"; // Prints "0"
std::cout << std::dec << (data[0] == data[0]) << "\n"; // Prints "0"
std::cout << std::dec << (f == g); // Prints "1"
Можно ли мне вывести шестнадцатеричное значение -nan, и если нет, может кто-нибудь подсказать, пожалуйстадвоичное, шестнадцатеричное и т. д. значение -nan?