<?php
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;
}
echo hitungNomorBit(13, 0) . "\n"; // Output: 1 (bit 0 = 1)
echo hitungNomorBit(13, 1) . "\n"; // Output: 3 (bit 1 ke bawah: 1+0+1)
var_dump(hitungNomorBit
(13, 2)); // Output: null (bit 2 = 0, hanya sampai 2, jadi total 2 bit yang 1)
PD9waHAKZnVuY3Rpb24gaGl0dW5nTm9tb3JCaXQoaW50ICRhbmdrYSwgaW50ICRub21vckJpdCk6ID9pbnQgewogICAgaWYgKCRhbmdrYSA8IDAgfHwgJG5vbW9yQml0IDwgMCkgcmV0dXJuIG51bGw7CgogICAgLy8gS29udmVyc2kgbWFudWFsIGRlc2ltYWwga2UgYmluZXIgZGFyaSBNU0Iga2UgTFNCCiAgICAkYmluZXIgPSBbXTsKICAgIHdoaWxlICgkYW5na2EgPiAwKSB7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkYmluZXIsICRhbmdrYSAlIDIpOwogICAgICAgICRhbmdrYSA9IGludGRpdigkYW5na2EsIDIpOwogICAgfQoKICAgIGlmICgkbm9tb3JCaXQgPj0gY291bnQoJGJpbmVyKSkgcmV0dXJuIG51bGw7CgogICAgJGp1bWxhaCA9IDA7CiAgICBmb3IgKCRpID0gMDsgJGkgPD0gJG5vbW9yQml0OyAkaSsrKSB7CiAgICAgICAgaWYgKCRiaW5lclskaV0gPT09IDEpIHsKICAgICAgICAgICAgJGp1bWxhaCsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJGp1bWxhaDsKfQoKZWNobyBoaXR1bmdOb21vckJpdCgxMywgMCkgLiAiXG4iOyAvLyBPdXRwdXQ6IDEgKGJpdCAwID0gMSkKZWNobyBoaXR1bmdOb21vckJpdCgxMywgMSkgLiAiXG4iOyAvLyBPdXRwdXQ6IDMgKGJpdCAxIGtlIGJhd2FoOiAxKzArMSkKdmFyX2R1bXAoaGl0dW5nTm9tb3JCaXQoMTMsIDIpKTsgICAvLyBPdXRwdXQ6IG51bGwgKGJpdCAyID0gMCwgaGFueWEgc2FtcGFpIDIsIGphZGkgdG90YWwgMiBiaXQgeWFuZyAxKQ==