Я использую следующий код для распечатки «двоичного представления» числа с плавающей запятой:
template<class F>
void printBinary(F value)
{
std::cout <<
std::bitset<sizeof(F) * 8>(*reinterpret_cast<unsigned long*>(&value)).to_string()
<< std::endl;
}
int main()
{
float f = 1;
printBinary(f);
f = 2;
printBinary(f);
f = 3;
printBinary(f);
f = 4;
printBinary(f);
f = 16;
printBinary(f);
f = 0.2;
printBinary(f);
}
Это выводит:
00111111100000000000000000000000
01000000000000000000000000000000
01000000010000000000000000000000
01000000100000000000000000000000
01000001100000000000000000000000
00111110010011001100110011001101
Может кто-нибудь объяснить, какие частикакие двоичные числа соответствуют выходным двоичным числам?Я ожидаю, что первый будет просто 10000...
.Второй имеет смысл.Я запутался в каждом выводе после этого, особенно в последнем.
Заранее спасибо.