Перевод из 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, чтобы указать, что программа успешно завершилась