function desimalKeBiner(angka) {
if (angka === 0) return "0";
let biner = "";
while (angka > 0) {
biner = (angka % 2 === 0 ? "0" : "1") + biner;
angka = Math.floor(angka / 2);
}
return biner;
}
function hitungNomorBit(angka, nomorBit) {
if (nomorBit !== 0 && nomorBit !== 1) {
return null;
}
const biner = desimalKeBiner(angka);
let jumlah = 0;
for (let i = 0; i < biner.length; i++) {
if (parseInt(biner[i]) === nomorBit) {
jumlah++;
}
}
return jumlah;
}
function cetakHasil(angka, nomorBit) {
const hasil = hitungNomorBit(angka, nomorBit);
console.log(`hitungNomorBit(${angka}, ${nomorBit}) -> ${hasil !== null ? hasil : "null"}`);
}
console.log("Binary of 13:", desimalKeBiner(13));
cetakHasil(13, 0);
cetakHasil(13, 1);
cetakHasil(13, 2);
console.log("\nBinary of 7:", desimalKeBiner(7));
cetakHasil(7, 0);
cetakHasil(7, 1);
console.log("\nBinary of 0:", desimalKeBiner(0));
cetakHasil(0, 0);
cetakHasil(0, 1);
console.log("\nBinary of 8:", desimalKeBiner(8));
cetakHasil(8,0);
cetakHasil(8,1);
ZnVuY3Rpb24gZGVzaW1hbEtlQmluZXIoYW5na2EpIHsKICAgIGlmIChhbmdrYSA9PT0gMCkgcmV0dXJuICIwIjsKCiAgICBsZXQgYmluZXIgPSAiIjsKICAgIHdoaWxlIChhbmdrYSA+IDApIHsKICAgICAgICBiaW5lciA9IChhbmdrYSAlIDIgPT09IDAgPyAiMCIgOiAiMSIpICsgYmluZXI7CiAgICAgICAgYW5na2EgPSBNYXRoLmZsb29yKGFuZ2thIC8gMik7CiAgICB9CiAgICByZXR1cm4gYmluZXI7Cn0KCmZ1bmN0aW9uIGhpdHVuZ05vbW9yQml0KGFuZ2thLCBub21vckJpdCkgewogICAgaWYgKG5vbW9yQml0ICE9PSAwICYmIG5vbW9yQml0ICE9PSAxKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3QgYmluZXIgPSBkZXNpbWFsS2VCaW5lcihhbmdrYSk7CiAgICBsZXQganVtbGFoID0gMDsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluZXIubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAocGFyc2VJbnQoYmluZXJbaV0pID09PSBub21vckJpdCkgewogICAgICAgICAgICBqdW1sYWgrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4ganVtbGFoOwp9CgpmdW5jdGlvbiBjZXRha0hhc2lsKGFuZ2thLCBub21vckJpdCkgewogICAgY29uc3QgaGFzaWwgPSBoaXR1bmdOb21vckJpdChhbmdrYSwgbm9tb3JCaXQpOwogICAgY29uc29sZS5sb2coYGhpdHVuZ05vbW9yQml0KCR7YW5na2F9LCAke25vbW9yQml0fSkgLT4gJHtoYXNpbCAhPT0gbnVsbCA/IGhhc2lsIDogIm51bGwifWApOwp9Cgpjb25zb2xlLmxvZygiQmluYXJ5IG9mIDEzOiIsIGRlc2ltYWxLZUJpbmVyKDEzKSk7CmNldGFrSGFzaWwoMTMsIDApOwpjZXRha0hhc2lsKDEzLCAxKTsKY2V0YWtIYXNpbCgxMywgMik7Cgpjb25zb2xlLmxvZygiXG5CaW5hcnkgb2YgNzoiLCBkZXNpbWFsS2VCaW5lcig3KSk7CmNldGFrSGFzaWwoNywgMCk7CmNldGFrSGFzaWwoNywgMSk7Cgpjb25zb2xlLmxvZygiXG5CaW5hcnkgb2YgMDoiLCBkZXNpbWFsS2VCaW5lcigwKSk7CmNldGFrSGFzaWwoMCwgMCk7CmNldGFrSGFzaWwoMCwgMSk7Cgpjb25zb2xlLmxvZygiXG5CaW5hcnkgb2YgODoiLCBkZXNpbWFsS2VCaW5lcig4KSk7CmNldGFrSGFzaWwoOCwwKTsKY2V0YWtIYXNpbCg4LDEpOw==
Binary of 13: 1101
hitungNomorBit(13, 0) -> 1
hitungNomorBit(13, 1) -> 3
hitungNomorBit(13, 2) -> null
Binary of 7: 111
hitungNomorBit(7, 0) -> 0
hitungNomorBit(7, 1) -> 3
Binary of 0: 0
hitungNomorBit(0, 0) -> 1
hitungNomorBit(0, 1) -> 0
Binary of 8: 1000
hitungNomorBit(8, 0) -> 3
hitungNomorBit(8, 1) -> 1