#include <iostream>
using namespace std;
int hitungNomorBit(int angka, int nomorBit);
string intToBin(int angka);
int main() {
cout << "hitungNomorBit(13, 0): " << hitungNomorBit(13, 0) << endl;
cout << "hitungNomorBit(13, 1): " << hitungNomorBit(13, 1) << endl;
cout << "hitungNomorBit(13, 2): " << hitungNomorBit(13, 2) << endl;
cout << "hitungNomorBit(128, 0): " << hitungNomorBit(128, 0) << endl;
cout << "hitungNomorBit(128, 1): " << hitungNomorBit(128, 1) << endl;
return 0;
}
int hitungNomorBit(int angka, int nomorBit)
{
string bin {intToBin(angka)};
int count {0};
if (nomorBit == 0 || nomorBit == 1)
{
for (char c: bin)
{
if (c - '0' == nomorBit)
{
count++;
}
}
return count;
}
else
{
return -1; // -1 dipakai sebagai substitut dari null
}
}
string intToBin(int angka)
{
string out {};
int sisa {0};
while (angka != 0)
{
sisa = angka % 2;
angka /= 2;
out.append(1, sisa + '0');
}
return out;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGhpdHVuZ05vbW9yQml0KGludCBhbmdrYSwgaW50IG5vbW9yQml0KTsKc3RyaW5nIGludFRvQmluKGludCBhbmdrYSk7CgoKaW50IG1haW4oKSB7Cgljb3V0IDw8ICJoaXR1bmdOb21vckJpdCgxMywgMCk6ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDApIDw8IGVuZGw7Cgljb3V0IDw8ICJoaXR1bmdOb21vckJpdCgxMywgMSk6ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDEpIDw8IGVuZGw7Cgljb3V0IDw8ICJoaXR1bmdOb21vckJpdCgxMywgMik6ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDIpIDw8IGVuZGw7Cgljb3V0IDw8ICJoaXR1bmdOb21vckJpdCgxMjgsIDApOiAiIDw8IGhpdHVuZ05vbW9yQml0KDEyOCwgMCkgPDwgZW5kbDsKCWNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEyOCwgMSk6ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTI4LCAxKSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0KCmludCBoaXR1bmdOb21vckJpdChpbnQgYW5na2EsIGludCBub21vckJpdCkKewoJc3RyaW5nIGJpbiB7aW50VG9CaW4oYW5na2EpfTsKCWludCBjb3VudCB7MH07CgkKCWlmIChub21vckJpdCA9PSAwIHx8IG5vbW9yQml0ID09IDEpCgl7CgkJZm9yIChjaGFyIGM6IGJpbikKCQl7CgkJCWlmIChjIC0gJzAnID09IG5vbW9yQml0KQoJCQl7CgkJCQljb3VudCsrOwoJCQl9CgkJfQoJCXJldHVybiBjb3VudDsKCX0KCWVsc2UKCXsKCQlyZXR1cm4gLTE7IC8vIC0xIGRpcGFrYWkgc2ViYWdhaSBzdWJzdGl0dXQgZGFyaSBudWxsCgl9Cn0KCnN0cmluZyBpbnRUb0JpbihpbnQgYW5na2EpCnsKCXN0cmluZyBvdXQge307CglpbnQgc2lzYSB7MH07CgkKCXdoaWxlIChhbmdrYSAhPSAwKQoJewoJCXNpc2EgPSBhbmdrYSAlIDI7CgkJYW5na2EgLz0gMjsKCQlvdXQuYXBwZW5kKDEsIHNpc2EgKyAnMCcpOwoJfQoJCglyZXR1cm4gb3V0Owp9