Skip to content

Instantly share code, notes, and snippets.

@dev-brutus
Created February 1, 2026 11:19
Show Gist options
  • Select an option

  • Save dev-brutus/824e159decc8ee094f6415256eaf05ef to your computer and use it in GitHub Desktop.

Select an option

Save dev-brutus/824e159decc8ee094f6415256eaf05ef to your computer and use it in GitHub Desktop.
Вывод бинарного представления float чисел
pub fn float32_to_bits_transmute(f: f32) -> [String; 2] {
// Прямое преобразование битового представления
let bits: u32 = f.to_bits();
// Создаем заголовок с рамками
let header = format!(
"{} ┌{:─^6}┐ ┌{:─^21}┐",
"S", "EXP", "MANT"
);
// Форматируем биты
let bits_str = format!(
"{} {:08b} {:023b}",
(bits >> 31) & 1,
(bits >> 23) & 0xFF,
bits & 0x7FFFFF
);
[header, bits_str]
}
fn main() {
let test_values = [
0.5_f32,
1.5_f32,
1_f32 / 3_f32,
(1_f32 / 3_f32) + 1.0,
1_f32 / 5_f32,
0.0_f32,
-0.0_f32,
1.0_f32,
-1.0_f32,
3.1415927_f32,
f32::INFINITY,
f32::NEG_INFINITY,
f32::NAN,
];
println!("Бинарное представление:");
println!("{}", "-".repeat(46));
for &value in &test_values {
let result = float32_to_bits_transmute(value);
println!("f32: {:>15}", value);
println!("Заголовок: {}", result[0]);
println!("Биты: {}", result[1]);
println!();
}
}
@dev-brutus
Copy link
Author

Вывод:

Бинарное представление:
----------------------------------------------
f32:             0.5
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 01111110 00000000000000000000000

f32:             1.5
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 01111111 10000000000000000000000

f32:      0.33333334
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 01111101 01010101010101010101011

f32:       1.3333334
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 01111111 01010101010101010101011

f32:             0.2
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 01111100 10011001100110011001101

f32:               0
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 00000000 00000000000000000000000

f32:              -0
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       1 00000000 00000000000000000000000

f32:               1
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 01111111 00000000000000000000000

f32:              -1
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       1 01111111 00000000000000000000000

f32:       3.1415927
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 10000000 10010010000111111011011

f32:             inf
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 11111111 00000000000000000000000

f32:            -inf
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       1 11111111 00000000000000000000000

f32:             NaN
Заголовок:  S ┌─EXP──┐ ┌────────MANT─────────┐
Биты:       0 11111111 10000000000000000000000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment