Посчитать количество едениц в двоичном представлении числа. Найти ошибку в коде - C (СИ)

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

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

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void main()
{
    union
    {
        char p[4];
        int t;
    }sym;
    int t;
    printf ("input: ");
    scanf ("%d", &t);
    printf ("%d = %x",t,t);
    sym.t=0;
    scanf("%c", &sym.p[0]);
    int a=sym.t;
    char temp;
    temp=sym.p[0];
    sym.p[0]=sym.p[3];
    sym.p[3]=temp;
    printf("\hex format after operation  %x",sym.p);
    int Bits1();  //хотела посчитать кол-во едениц в двоичном представлении числа а
        {
    unsigned char a=sym.t;
    int i = 0, r = 0;
    for(;i<8*sizeof(sym.p); i++, a>>=1)
        if(a & 1)
            r++;
    return r;//тут ругается тип возвращаемого значения не соотвествует типу функции
        }
    getchar();
}

Решение задачи: «Посчитать количество едениц в двоичном представлении числа. Найти ошибку в коде»

textual
Листинг программы
int nbits(unsigned int x)
{
    int n = 0;
    while( x != 0 ) {
        n += x & 1;
        x >>= 1;
    }
    return n;
}

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

  1. В функции nbits аргументом является unsigned int x.
  2. Переменная n инициализируется значением 0 и используется для подсчета количества единиц.
  3. В цикле while происходит проверка, не равно ли значение x нулю.
  4. В каждой итерации цикла значение x сдвигается вправо на 1 бит с помощью оператора >>.
  5. С помощью оператора & получается младший бит числа x, который затем приравнивается к 1.
  6. Значение 1 добавляется к переменной n.
  7. После завершения цикла возвращается значение переменной n.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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