Dla typu int to zadanie nie bardzo ma sens, bo reprezentacja liczb ujemnych zależ od implementacji. Ale ma sens dla unsigned i można się obejść bez tablicy
#include <iostream>
int main()
{
unsigned n = 0xA8E9'D2AC;
int count = 0;
while (n != 0)
{
if ((n & 0b111) == 0b101)
++count;
n >>= 1;
}
std::cout << count << '\n';
}