Прибавить 1 к десятичному числу записанному в двоичной системе счисления - C (СИ)
Формулировка задачи:
Прибавить 1 к десятичному числу записанного в двоичной системе счисления
у меня есть такой код:
!!!P.S если просто при переводе с десятичного в двоичную ,небольшая проблема выводит на 1 меньше чем надо
Например (4=99,вместо 4=100);(5=100,вместо 5=101) и т.д.
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <math.h>
- void dvoich(int x1)
- {
- int i, b;
- int c = 0;
- for(i=0;x1 > 0;i++)
- {
- b = x1 % 2;
- x1 = (x1-b)/2;
- c += (b * pow(10,i));
- }
- printf("\nDvoichnoe chislo: %d",c);
- }
- int main()
- {
- int a;
- printf("Vvedite desyatichnoe chislo:");
- scanf("%d",&a);
- dvoich(a);
- getch();
- }
Решение задачи: «Прибавить 1 к десятичному числу записанному в двоичной системе счисления»
textual
Листинг программы
- void dvoich(int x)
- {
- int i,c,d=1;
- for(c=i=0; x; i++,d*=10)
- {
- c+=x%2*d;
- x/=2;
- }
- printf("\nDvoichnoe chislo: %d\n",c);
- }
Объяснение кода листинга программы
- Передаем в функцию int x - десятичное число
- В функции объявляем переменные:
- i - счетчик циклов
- c - результат преобразования числа из двоичной системы счисления
- d - множитель для получения значения десятичной цифры в зависимости от разряда числа
- Запускаем цикл for, который выполняется до тех пор, пока x не равно нулю:
- При каждой итерации цикла значение переменной i увеличивается на 1
- Значение переменной d умножается на 10 в соответствии с разрядом числа
- Внутри цикла выполняем следующие действия:
- Получаем остаток от деления x на 2 и умножаем его на значение переменной d
- Полученное значение добавляем к переменной c
- Делим x на 2
- После завершения цикла выводим значение переменной c, которое является результатом преобразования числа из двоичной системы счисления в десятичную систему счисления
- Возвращаем 0, чтобы функция не возвращала значение, а продолжала работу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д