Перевод из 10 системы счисления в 2 - C (СИ) (71772)
Формулировка задачи:
День добрый, помогите пожалуйста написать такую программу, я попробовал, но она не работает, не совсем понимаю почему.
#include "stdio.h" int main(void) { int x; int y,n=0; printf("Введите число х: "); scanf("%d", x); while( x > 0 ) { y = (x % 2); n = y + n; x = int(x/2); } printf("%d", n); getchar(); return 0; }
Решение задачи: «Перевод из 10 системы счисления в 2»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { const int size = sizeof(unsigned int)*8; unsigned int decNum, i; char binNum[size] = {0}; printf("Enter: "); scanf("%d",&decNum); for (i=0; i<size; i++) { binNum[i] = decNum % 2; decNum /= 2; } for (int i=size-1; i>=0; i--) { printf("%d",binNum[i]); if (i%8==0) printf(" "); } printf("\n"); system("pause"); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем переменные:
- decNum - переменная для ввода десятичного числа
- i - счётчик цикла
- binNum - массив для хранения двоичного представления числа
- Выводим приглашение для ввода числа
- Считываем десятичное число с помощью функции scanf
- Инициализируем массив binNum нулями
- Запускаем цикл, который будет перебирать все биты числа, начиная с старшего (правого) бита
- В каждой итерации цикла присваиваем соответствующему биту массива binNum значение остатка от деления decNum на 2
- Делим decNum на 2 для получения следующего бита
- После завершения первого цикла выводим двоичное представление числа, сначала проверяя, не будет ли остаток от деления на 8 (что соответствует сдвигу на 3 бита вправо) больше или равен 8
- В конце программы добавляем паузу с помощью функции system, чтобы программа не закрылась сразу после вывода результата
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д