Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <cstdio>
- #include <cfloat>
- #include <limits>
- #include <iostream>
- #include <stdint.h>
- int main()
- {
- {
- double dfNan = std::numeric_limits<double>::quiet_NaN();
- double dfNegNan = -std::numeric_limits<double>::quiet_NaN();
- uint64_t *nNan = (uint64_t *)&dfNan;
- uint64_t *nNegNan = (uint64_t *)&dfNegNan;
- std::cout << ": " << std::hex << *nNan << "\n";
- std::cout << ": " << std::hex << *nNegNan << "\n";
- }
- {
- float fNan = std::numeric_limits<double>::quiet_NaN();
- float fNegNan = -std::numeric_limits<double>::quiet_NaN();
- uint32_t *nNan = (uint32_t *)&fNan;
- uint32_t *nNegNan = (uint32_t *)&fNegNan;
- std::cout << ": " << std::hex << *nNan << "\n";
- std::cout << ": " << std::hex << *nNegNan << "\n";
- }
- std::cout << "1: " << -std::numeric_limits<double>::quiet_NaN() << "\n";
- std::cout << "2: " << std::hex << (uint64_t)std::numeric_limits<double>::quiet_NaN() << "\n";
- std::cout << "3: " << std::hex << (uint64_t)-std::numeric_limits<double>::quiet_NaN() << "\n";
- std::cout << "4: " << std::hex << (uint32_t)std::numeric_limits<float>::quiet_NaN() << "\n";
- std::cout << "5: " << std::hex << (uint32_t)-std::numeric_limits<float>::quiet_NaN() << "\n";
- std::cout << std::signbit(std::numeric_limits<double>::quiet_NaN()) << "\n";
- std::cout << std::signbit(-std::numeric_limits<double>::quiet_NaN()) << "\n";
- std::cout << std::signbit(std::numeric_limits<float>::quiet_NaN()) << "\n";
- std::cout << std::signbit(-std::numeric_limits<float>::quiet_NaN()) << "\n";
- return 0;
- }
- /*
- g++ -std=c++11 -o nan -g -Wall -Wextra nan.cc && ./nan
- : 7ff8000000000000
- : fff8000000000000
- : 7fc00000
- : ffc00000
- 1: -nan
- 2: 8000000000000000
- 3: 8000000000000000
- 4: 0
- 5: 0
- 0
- 1
- 0
- 1
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement