Я пытаюсь реализовать с C, который выводит число двух последовательных 1-бит в целое число без наложения.Это мой код:
#include <stdio.h>
int numPairs(int num) {
int count = 0;
while (num) {
num = (num & (num << 1));
count++;
}
return count / 2;
}
int main(){
printf("%d\t", numPairs(10000));
printf("%d\t", numPairs(146));
printf("%d\t", numPairs(7645));
printf("%d\t", numPairs(16383));
return 0;
}
Мой вывод 1 0 1 7
Но вывод должен быть 1 0 3 7
Все правильно, кроме 7645
, иЯ не знаю, что с этим не так.
Для 7645
мой код дает результат 1
, но правильный результат - 3
.