function hitungNomorBit(int $angka, int $nomorBit): ?int {
if ($angka < 0 || $nomorBit < 0) return null;
// Konversi manual desimal ke biner dari MSB ke LSB
$biner = [];
while ($angka > 0) {
$angka = intdiv($angka, 2);
}
if ($nomorBit >= count($biner)) return null;
$jumlah = 0;
for ($i = 0; $i <= $nomorBit; $i++) {
if ($biner[$i] === 1) {
$jumlah++;
}
}
return $jumlah;
}
ZnVuY3Rpb24gaGl0dW5nTm9tb3JCaXQoaW50ICRhbmdrYSwgaW50ICRub21vckJpdCk6ID9pbnQgewogICAgaWYgKCRhbmdrYSA8IDAgfHwgJG5vbW9yQml0IDwgMCkgcmV0dXJuIG51bGw7CgogICAgLy8gS29udmVyc2kgbWFudWFsIGRlc2ltYWwga2UgYmluZXIgZGFyaSBNU0Iga2UgTFNCCiAgICAkYmluZXIgPSBbXTsKICAgIHdoaWxlICgkYW5na2EgPiAwKSB7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkYmluZXIsICRhbmdrYSAlIDIpOwogICAgICAgICRhbmdrYSA9IGludGRpdigkYW5na2EsIDIpOwogICAgfQoKICAgIGlmICgkbm9tb3JCaXQgPj0gY291bnQoJGJpbmVyKSkgcmV0dXJuIG51bGw7CgogICAgJGp1bWxhaCA9IDA7CiAgICBmb3IgKCRpID0gMDsgJGkgPD0gJG5vbW9yQml0OyAkaSsrKSB7CiAgICAgICAgaWYgKCRiaW5lclskaV0gPT09IDEpIHsKICAgICAgICAgICAgJGp1bWxhaCsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJGp1bWxhaDsKfQo=