![]() |
вопрос наСильникам про тип Float
|
каким макаром из 0000bc41 получается 23,5 ?
--- |
из описания Float что нашел в тырнете
1 бит - знак, тут понятно 0 - значит положительное число следующие 8 бит порядок числа и остальные 23 бита мантисса целая как я понимаю ? --- так вот, как видно первые 8 бит все 0 значит порядок числа = 0 значит M*10^0 = M*1 так каким же макаром 23,5 получается ? |
Мантисы в двоичном виде
23,5
"001111000010100011111010" 25 "010000000000000000000000" 28,8 "01001001101110100101111" |
мантиса нормируется к числу от 0,5 до 1
и переводится в двоичное число полученый порядок тоже двоичный .................................... ты же все приводишь к десятичному основанию, а это не так. если хочешь познвть как все делается сходи на васм..там тебе расскажут |
Так на вскидку вспомнил.
typedef union { float f; u_char c[4]; u_int32 u; } data; main() { data d; /* ...... */ printf("floaf %f int 0x%08X char0 %x char1 %x char2 %x char4 %x", d.f, d.u, d.c[0], d.c[1], d.c[2], d.c[3]); } И посмотри чё там выведеца, в цыкле. например от d.f = 0.0 до d.f < 30.0 насколько помню, то ли 0 то ли 1-ца это магическое число 0x2f8. Заметь, что техасовский float это не то же самое что и float intel. |
| Часовой пояс GMT +3, время: 02:24. |
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot