Прибавить 1 к десятичному числу записанному в двоичной системе счисления - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Прибавить 1 к десятичному числу записанного в двоичной системе счисления у меня есть такой код:
#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();
}
!!!P.S если просто при переводе с десятичного в двоичную ,небольшая проблема выводит на 1 меньше чем надо Например (4=99,вместо 4=100);(5=100,вместо 5=101) и т.д.

Решение задачи: «Прибавить 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);
}

Объяснение кода листинга программы

  1. Передаем в функцию int x - десятичное число
  2. В функции объявляем переменные:
    • i - счетчик циклов
    • c - результат преобразования числа из двоичной системы счисления
    • d - множитель для получения значения десятичной цифры в зависимости от разряда числа
  3. Запускаем цикл for, который выполняется до тех пор, пока x не равно нулю:
    • При каждой итерации цикла значение переменной i увеличивается на 1
    • Значение переменной d умножается на 10 в соответствии с разрядом числа
  4. Внутри цикла выполняем следующие действия:
    • Получаем остаток от деления x на 2 и умножаем его на значение переменной d
    • Полученное значение добавляем к переменной c
    • Делим x на 2
  5. После завершения цикла выводим значение переменной c, которое является результатом преобразования числа из двоичной системы счисления в десятичную систему счисления
  6. Возвращаем 0, чтобы функция не возвращала значение, а продолжала работу

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы