Посчитать количество едениц в двоичном представлении числа. Найти ошибку в коде - 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;
- }
Объяснение кода листинга программы
- В функции
nbits
аргументом являетсяunsigned int x
. - Переменная
n
инициализируется значением 0 и используется для подсчета количества единиц. - В цикле
while
происходит проверка, не равно ли значениеx
нулю. - В каждой итерации цикла значение
x
сдвигается вправо на 1 бит с помощью оператора>>
. - С помощью оператора
&
получается младший бит числаx
, который затем приравнивается к 1. - Значение 1 добавляется к переменной
n
. - После завершения цикла возвращается значение переменной
n
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д