<?php
function hitungNomorBit(int $angka, int $nomorBit): ?int {
if ($angka < 0 || $nomorBit < 0) return null;
$biner = [];
while ($angka > 0) {
$angka = intdiv($angka, 2);
}
if ($nomorBit >= count($biner)) { return null;
}
$jumlah = 0;
for ($i = $nomorBit; $i < count($biner); $i++) { if ($biner[$i] === 1) {
$jumlah++;
}
}
return $jumlah;
}
echo "hitungNomorBit(13, 0) = " . hitungNomorBit(13, 0) . "\n"; // 1 (bit: 1)
echo "hitungNomorBit(13, 1) = " . hitungNomorBit(13, 1) . "\n"; // 3 (bit: 1, 0, 1)
echo "hitungNomorBit(13, 2) = ";
PD9waHAKCmZ1bmN0aW9uIGhpdHVuZ05vbW9yQml0KGludCAkYW5na2EsIGludCAkbm9tb3JCaXQpOiA/aW50IHsKICAgIGlmICgkYW5na2EgPCAwIHx8ICRub21vckJpdCA8IDApIHJldHVybiBudWxsOwoKICAgICRiaW5lciA9IFtdOwogICAgd2hpbGUgKCRhbmdrYSA+IDApIHsKICAgICAgICBhcnJheV91bnNoaWZ0KCRiaW5lciwgJGFuZ2thICUgMik7CiAgICAgICAgJGFuZ2thID0gaW50ZGl2KCRhbmdrYSwgMik7CiAgICB9CgogICAgaWYgKCRub21vckJpdCA+PSBjb3VudCgkYmluZXIpKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgJGp1bWxhaCA9IDA7CiAgICBmb3IgKCRpID0gJG5vbW9yQml0OyAkaSA8IGNvdW50KCRiaW5lcik7ICRpKyspIHsKICAgICAgICBpZiAoJGJpbmVyWyRpXSA9PT0gMSkgewogICAgICAgICAgICAkanVtbGFoKys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkanVtbGFoOwp9CgplY2hvICJoaXR1bmdOb21vckJpdCgxMywgMCkgPSAiIC4gaGl0dW5nTm9tb3JCaXQoMTMsIDApIC4gIlxuIjsgLy8gMSAoYml0OiAxKQplY2hvICJoaXR1bmdOb21vckJpdCgxMywgMSkgPSAiIC4gaGl0dW5nTm9tb3JCaXQoMTMsIDEpIC4gIlxuIjsgLy8gMyAoYml0OiAxLCAwLCAxKQplY2hvICJoaXR1bmdOb21vckJpdCgxMywgMikgPSAiOwp2YXJfZHVtcChoaXR1bmdOb21vckJpdCgxMywgMikpOyAKCg==