Посчитать количество едениц в двоичном представлении числа. Найти ошибку в коде - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д