потеряет 1. Записывая U как двоичную сумму, мы теряем 1 для каждого бита, установленного в 1.
ервью мне задали следующий вопрос:
int foofoo(unsigned int u) {
unsigned int foo = u;
do{
u = u/2;
foo -= u;
}while(u > 0);
return foo;
}
Меня попросили рассказать, что делает эта функция, и я смог обнаружить, что она подсчитывает количество установленных битов в значении unsigned int, но я не смог доказать это, может кто-то может?