сдвиг вправо для поплавка - PullRequest
0 голосов
/ 08 января 2012

У меня есть переменная типа float

float f = 0b 00000000 11110001 00000000 00000000 

Я хочу взять 1-й (не 0-й) байт в переменную char.Я не могу сделать << и >>.как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 08 января 2012

Обычно мало смысла путать двоичное представление значений с плавающей запятой.Все, что вы попробуете, не будет портативным.Однако, как правило, эти две работы:

char c(reinterpret_cast<char*>(&f)[1]);
union {
    float f;
    char  c[sizeof(float)];
} u = { f };
u.c[1];
2 голосов
/ 08 января 2012
char bla;
bla = *((char *) &f + 1)

Также помните, что с порядком байтов в системах с прямым порядком байтов то, что вы на самом деле хотите, это байт 2 (при условии, что вы считаете свой байт от 0 до 3).В этом случае вы должны изменить + 1 на + 2 в приведенном выше коде.

...