Double to binary или как узнать сколько бит в числе? - C (СИ)

Формулировка задачи:

Нужно узнать сколько бит в числе, оно может быть любым:1-целое положительное(напр 3),2-целое отрицательное(-3),3-число положительное с дробной частью(3.14)4- число отрицательное с дробной частью Пробовала код реализовать школьным способом(деление на два+остаток с целой частью и умножение с дробной) Оказывается, double в бинарном виде записывается по другому...Например 10.5 в бинарном 1010.1=3 единички а вот в бинарном double это будет 0 10000000010 0101000000000000000000000000000000000000000000000000 - уже 4 единички... Обьясните пожалуйста, как реализовать запись числа по (IEEE754 Double precision 64-bit). Почитала про то, как представляются числа с плавающей точкой, но так и не поняла... формула ((-1)^s)*M*N^e,s — знак, N-основание, e — порядок, а M — мантисса... Ну и как мне по этой формуле записать число например 3.5? Или есть ли способ подсчитать число бит в числе?

Код к задаче: «Double to binary или как узнать сколько бит в числе? - C (СИ)»

textual
double x;
unsigned char *px = (unsigned char *)(&x);
int Nbit = 0;
for(i=0; i<sizeof(x); i++) {
  unsigned char cx = *(px+i);
  for (j=0; j<8; j++)
    Nbit += (cx>>j)&1;
}

9   голосов, оценка 3.556 из 5


СОХРАНИТЬ ССЫЛКУ