Перевод числа представленного в экспоненциальной записи в двоичную систему - C (СИ)
Формулировка задачи:
Всем привет! Столкнулся с такой задачкой: Нужно написать программу для перевода числа в научной нотации
(экспоненциальная запись ) в двоичную систему. Очень нужна помощь... в субботу уже сдавать надо, а у меня пока никаких мыслей по поводу написания програмки.
Решение задачи: «Перевод числа представленного в экспоненциальной записи в двоичную систему»
textual
Листинг программы
void p_bin(unsigned int x) {
int i = sizeof(x) * 8 - 1;
puts("");
for (; i >= 0; --i)
printf("%d", x >> i & 1);
}
int main(void) {
float x;
scanf("%e", &x);
printf("%e\n", x);
int fl = *(int*) &x;
p_bin(fl);
return 0;
}
Объяснение кода листинга программы
- В функции
p_binобъявлена переменнаяiтипаintсо значениемsizeof(x) * 8 - 1, гдеx- это переменная типаunsigned int. Это значение используется для вычисления количества циклов в циклеfor. - В функции
mainобъявлена переменнаяxтипаfloat, которая инициализируется значением, введенным пользователем с помощью функцииscanf. - Затем в функцию
printfпередается значение переменнойxдля вывода на экран. - Далее переменная
flинициализируется значением, полученным из указателя на первый байт переменнойxпри приведении типа кint. - В конце функции
mainвызывается функцияp_binс аргументомfl. - Значение переменной
iв функцииp_binиспользуется в качестве параметра в операторе>>для сдвига байтов вправо. - Результат этого сдвига сохраняется в переменной
x, а затем используется в операторе&для получения бита из числа. - Значение этого бита затем выводится на экран с помощью функции
printf. - Цикл
forпродолжается до тех пор, пока значениеiбольше или равно нулю. - Значение переменной
flиспользуется в качестве аргумента при вызове функцииp_binв функцииmain. - В конце функции
mainвозвращается значение 0, что означает успешный конец работы программы.