std::bit_cast из переносит объект в другой тип того же размера, если оба типа тривиально копируемы.">
⊗cpSpBtBc 309 of 696 menu

Приведение битов через std::bit_cast в C++

Побитовая копия через std::bit_cast из <bit> переносит объект в другой тип того же размера, если оба типа тривиально копируемы.

Так получают целое с тем же представлением, что у числа с плавающей точкой, не используя union и не нарушая строгие правила aliasing. Запишем float, перенесем биты в std::uint32_t и выведем hex-вид через поток:

#include <bit> #include <cstdint> #include <iostream> float pi = 3.14f; std::uint32_t raw = std::bit_cast<std::uint32_t>(pi); std::cout << std::hex << raw << "\n";

Обратное приведение восстанавливает исходное число с плавающей точкой. Запишем константу и вернем float:

#include <bit> #include <cstdint> #include <iostream> std::uint32_t pattern = 0x40490fdb; float value = std::bit_cast<float>(pattern); std::cout << value << "\n";

Объявите float one равным 1.0f. Получите std::uint32_t bits через std::bit_cast и выведите bits в шестнадцатеричном виде.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить