Crates.io | twiddle |
lib.rs | twiddle |
version | 1.1.0 |
source | src |
created_at | 2015-09-17 02:39:42.17229 |
updated_at | 2018-10-12 18:47:32.546122 |
description | Bit-twiddling utility functions |
homepage | |
repository | https://github.com/niconii/twiddle |
max_upload_size | |
id | 3059 |
size | 24,608 |
A small library for bit-twiddling.
You can use it by adding this to your Cargo.toml
file:
[dependencies]
twiddle = "1.1"
and adding this to the top of your crate root (main.rs
or lib.rs
):
extern crate twiddle;
use twiddle::Twiddle;
extern crate twiddle;
use twiddle::Twiddle;
struct UnpackedF32 {
negative: bool,
exponent: i16,
fraction: u32,
}
impl From<f32> for UnpackedF32 {
fn from(f: f32) -> UnpackedF32 {
let b = f.to_bits();
UnpackedF32 {
negative: b.bit(31),
exponent: (b.bits(30..=23) as i16) - 127,
fraction: b.bits(22..=0)
}
}
}
fn main() {
for f in -5..=5 {
let u = UnpackedF32::from(f as f32);
println!("{:+} = {}1.{:023b} * 2^{}",
f,
match u.negative { false => "+", true => "-" },
u.fraction,
u.exponent
);
}
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.