Перевод числа с плавающей точкой в двоичную форму - C (СИ)
Формулировка задачи:
здравствуйте! нужна помощь в выполнении программы для перевода числа с плавающей точкой в двоичную систему счисления. Пробовал записывать в виде 3.14e0, но программа выводит не верные результаты.
#include <stdio.h>
void exp(unsigned int x)
{
int i = sizeof(x) * 8 - 1;
puts("Binary form os this number is:");
for (; i >= 0; --i)
printf("%d", x >> i & 1);
}
int main(void)
{
float x;
printf("Enter any exponential number:");
scanf("%e", &x);
printf("%e\n", x);
int fl = *(int*) &x;
exp(fl);
return 0;
}Решение задачи: «Перевод числа с плавающей точкой в двоичную форму»
textual
Листинг программы
#include <stdio.h>
void PrintDblAsBin(const double number)
{
int i;
int j;
int len;
const char *num;
len = sizeof(double) - 1;
num = (char*)&number;
for (i = len; i >= 0; i--)
for (j = 7; j >= 0; j--)
printf("%i", (num[i] >> j) & 1);
printf("\n");
}
int main(int argc, char* argv[])
{
PrintDblAsBin(0.0);
PrintDblAsBin(1.0);
PrintDblAsBin(2.34);
PrintDblAsBin(3.1416);
PrintDblAsBin(9.0);
PrintDblAsBin(-0.0);
PrintDblAsBin(-1.0);
PrintDblAsBin(-2.34);
PrintDblAsBin(-3.1416);
PrintDblAsBin(-9.0);
return 0;
}