右移为漂浮

时间:2012-01-08 17:43:42

标签: c++ bit-shift

我有像那样的浮动

float f = 0b 00000000 11110001 00000000 00000000 

我想把第一个(不是第0个)字节带到char变量。 我不能做<<和>>。 我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

浮点值的二进制表示通常没什么问题。任何你尝试的都不会是便携式的。但是,一般来说,这两个工作:

char c(reinterpret_cast<char*>(&f)[1]);
union {
    float f;
    char  c[sizeof(float)];
} u = { f };
u.c[1];

答案 1 :(得分:2)

char bla;
bla = *((char *) &f + 1)

还要记住,对于endianness,在小端系统上你可能真正需要的是字节2(假设你将字节从0计数到3)。在这种情况下,您可以在上面的代码中使用+ 1更改+ 2