Подсчет количества единичных бит

108
27 февраля 2021, 00:00

Нужно посчитать количество единичных бит, запрещается использовать любые арифметические операции (даже инкремент) и любые сторонние библиотеки (кроме iostream). Разрешается использование циклов и условных операторов.

Входные данные: 7 Выходные данные: 3

#include <iostream> 
using namespace std; 
int main(){ 
    int t,x = 0; 
    cin >> x; 
    while (x != 0) { 
        t += 1; x &= x-1; 
    } 
    cout<<t; 
}

Пытался делать, но получается только с инкрементом

Answer 1

Вот же задание..

unsigned increment(unsigned value) {
    unsigned bit = 1;
    while (value & bit) {
        value ^= bit;
        bit <<= 1;
    }
    value |= bit;
    return value;
}
int ones(unsigned i) {
    unsigned bit = 1;
    int res = 0;
    while (bit) {
        if (i & bit) 
            res = increment(res);
        bit <<= 1;  
    }
    return res;
} 
READ ALSO
add_subdirectory добавить папку уровня выше

add_subdirectory добавить папку уровня выше

Продолжение изучения CMake: Как добавить qt классы в подпроект?Теперь необходимо без корневого файла CMakeLists

89
Ввод двумерного массива с клавиатуры

Ввод двумерного массива с клавиатуры

Как ввести массив E[N][N] с клавиатуры? получилось только определить с помощью #define

82
Как конвертировать string в _bstr_t

Как конвертировать string в _bstr_t

Как string test конвертировать в _bstr_t c++

113
Как использовать static_assert для следующего фрагмента кода?

Как использовать static_assert для следующего фрагмента кода?

Есть вот такой пользовательский литералЯ бы хотел выкинуть предупреждение в случае если принимаемое значение не лежит в диапазоне 0

106