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 или как узнать сколько бит в числе?»
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; }
Объяснение кода листинга программы
В данном коде:
- Объявляется переменная типа double x, которая будет использоваться в дальнейшем.
- При помощи оператора reinterpret_cast происходит приведение адреса переменной x к типу unsigned char*, что позволяет рассматривать память, занимаемую переменной x, как последовательность байтов.
- Объявляется переменная типа int Nbit, которая будет использоваться для подсчета количества бит в числе.
- В цикле for перебираются все байты, которые занимают число x.
- Для каждого байта выполняется внутренний цикл for, который перебирает все 8 бит данного байта.
- Внутренний цикл вычисляет количество бит, равное значению бита, сдвинутого на текущую позицию (j) вправо (>>) и умноженного на 1 (&1).
- Результаты всех вычислений складываются в переменную Nbit.
- В конце цикла переменная Nbit будет содержать общее количество бит числа x.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д