#include <iostream>
int hitungNomorBit(int angka, int nomorBit) {
// Validasi input: nomorBit harus 0 atau 1.
if (nomorBit != 0 && nomorBit != 1) {
return -1;
}
// Kasus kalau angka adalah 0.
if (angka == 0) {
return (nomorBit == 0) ? 1 : 0;
}
int hitungan = 0;
// Logika untuk mencari desimal dalam binernya.
while (angka > 0) {
int sisa = angka % 2;
// std::cout << "Sisa: " << sisa << std::endl;
if (sisa == nomorBit) {
hitungan++;
}
angka = angka / 2;
// std::cout << "Angka setelah pembagian: " << angka << std::endl;
// std::cout << "Hitungan saat ini: " << hitungan << std::endl;
}
return hitungan;
}
int main() {
std::cout << "HASIL TES" << std::endl;
int hasil1 = hitungNomorBit(13, 0);
std::cout << "hitungNomorBit(13, 0) -> " << hasil1 << std::endl;
int hasil2 = hitungNomorBit(13, 1);
std::cout << "hitungNomorBit(13, 1) -> " << hasil2 << std::endl;
int hasil3 = hitungNomorBit(13, 2);
std::cout << "hitungNomorBit(13, 2) -> ";
if (hasil3 == -1) {
std::cout << "null" << std::endl;
} else {
std::cout << hasil3 << std::endl;
}
// tes tambahan jika angkanya 0
// int tes4 = hitungNomorBit(0, 0);
// std::cout << "hitungNomorBit(0, 0) -> " << tes4 << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IGhpdHVuZ05vbW9yQml0KGludCBhbmdrYSwgaW50IG5vbW9yQml0KSB7CiAgICAvLyBWYWxpZGFzaSBpbnB1dDogbm9tb3JCaXQgaGFydXMgMCBhdGF1IDEuCiAgICBpZiAobm9tb3JCaXQgIT0gMCAmJiBub21vckJpdCAhPSAxKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgIC8vIEthc3VzIGthbGF1IGFuZ2thIGFkYWxhaCAwLgogICAgaWYgKGFuZ2thID09IDApIHsKICAgICAgICByZXR1cm4gKG5vbW9yQml0ID09IDApID8gMSA6IDA7CiAgICB9CgogICAgaW50IGhpdHVuZ2FuID0gMDsKCiAgICAvLyBMb2dpa2EgdW50dWsgbWVuY2FyaSBkZXNpbWFsIGRhbGFtIGJpbmVybnlhLgogICAgd2hpbGUgKGFuZ2thID4gMCkgewogICAgICAgIGludCBzaXNhID0gYW5na2EgJSAyOwogICAgICAgIC8vIHN0ZDo6Y291dCA8PCAiU2lzYTogIiA8PCBzaXNhIDw8IHN0ZDo6ZW5kbDsKICAgICAgICBpZiAoc2lzYSA9PSBub21vckJpdCkgewogICAgICAgICAgICBoaXR1bmdhbisrOwogICAgICAgIH0KICAgICAgICBhbmdrYSA9IGFuZ2thIC8gMjsKICAgICAgICAvLyBzdGQ6OmNvdXQgPDwgIkFuZ2thIHNldGVsYWggcGVtYmFnaWFuOiAiIDw8IGFuZ2thIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAvLyBzdGQ6OmNvdXQgPDwgIkhpdHVuZ2FuIHNhYXQgaW5pOiAiIDw8IGhpdHVuZ2FuIDw8IHN0ZDo6ZW5kbDsKICAgIH0KCiAgICByZXR1cm4gaGl0dW5nYW47Cn0KCmludCBtYWluKCkgewogICAgc3RkOjpjb3V0IDw8ICJIQVNJTCBURVMiIDw8IHN0ZDo6ZW5kbDsKCiAgICBpbnQgaGFzaWwxID0gaGl0dW5nTm9tb3JCaXQoMTMsIDApOwogICAgc3RkOjpjb3V0IDw8ICJoaXR1bmdOb21vckJpdCgxMywgMCkgLT4gIiA8PCBoYXNpbDEgPDwgc3RkOjplbmRsOwoKICAgIGludCBoYXNpbDIgPSBoaXR1bmdOb21vckJpdCgxMywgMSk7CiAgICBzdGQ6OmNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEzLCAxKSAtPiAiIDw8IGhhc2lsMiA8PCBzdGQ6OmVuZGw7CiAgICAKICAgIGludCBoYXNpbDMgPSBoaXR1bmdOb21vckJpdCgxMywgMik7CiAgICBzdGQ6OmNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEzLCAyKSAtPiAiOwogICAgaWYgKGhhc2lsMyA9PSAtMSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAibnVsbCIgPDwgc3RkOjplbmRsOwogICAgfSBlbHNlIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgaGFzaWwzIDw8IHN0ZDo6ZW5kbDsKICAgIH0KCgkvLyB0ZXMgdGFtYmFoYW4gamlrYSBhbmdrYW55YSAwCiAgICAvLyBpbnQgdGVzNCA9IGhpdHVuZ05vbW9yQml0KDAsIDApOwogICAgLy8gc3RkOjpjb3V0IDw8ICJoaXR1bmdOb21vckJpdCgwLCAwKSAtPiAiIDw8IHRlczQgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9