<?php
function hitungNomorBit($angka, $nomorBit) {
// Konversi manual ke biner (array dari kanan ke kiri)
$biner = [];
$n = $angka;
if ($n == 0) $biner[] = 0;
while ($n > 0) {
$biner[] = $n % 2;
$n = intdiv($n, 2);
}
// Kembalikan nilai bit ke-n jika ada, null jika tidak ada
if ($nomorBit >= 0 && $nomorBit < count($biner)) { return $biner[$nomorBit];
}
return null;
}
function cetakBitDanDesimal($angka, $nomorBit) {
$bit = hitungNomorBit($angka, $nomorBit);
if ($bit === null) {
echo "Bit ke-$nomorBit: NULL = NULL\n";
} elseif ($bit == 1) {
echo "Bit ke-$nomorBit: 1 = " . (2 ** $nomorBit) . "\n";
} else {
echo "Bit ke-$nomorBit: 0 = NULL \n";
}
}
// test
cetakBitDanDesimal(13, 0); // Bit ke-0: 1 = 1
cetakBitDanDesimal(13, 1); // Bit ke-1: 0 =
cetakBitDanDesimal(13, 2); // Bit ke-2: 1 = 4
cetakBitDanDesimal(19, 4); // Bit ke-4: 1 = 16
cetakBitDanDesimal(9, 0); // Bit ke-0: 1 = 1
cetakBitDanDesimal(9, 1); // Bit ke-0: 1 = 1
cetakBitDanDesimal(9, 3); // Bit ke-3: 1 = 8
?>
PD9waHAKZnVuY3Rpb24gaGl0dW5nTm9tb3JCaXQoJGFuZ2thLCAkbm9tb3JCaXQpIHsKICAgIC8vIEtvbnZlcnNpIG1hbnVhbCBrZSBiaW5lciAoYXJyYXkgZGFyaSBrYW5hbiBrZSBraXJpKQogICAgJGJpbmVyID0gW107CiAgICAkbiA9ICRhbmdrYTsKICAgIGlmICgkbiA9PSAwKSAkYmluZXJbXSA9IDA7CiAgICB3aGlsZSAoJG4gPiAwKSB7CiAgICAgICAgJGJpbmVyW10gPSAkbiAlIDI7CiAgICAgICAgJG4gPSBpbnRkaXYoJG4sIDIpOwogICAgfQogICAgLy8gS2VtYmFsaWthbiBuaWxhaSBiaXQga2UtbiBqaWthIGFkYSwgbnVsbCBqaWthIHRpZGFrIGFkYQogICAgaWYgKCRub21vckJpdCA+PSAwICYmICRub21vckJpdCA8IGNvdW50KCRiaW5lcikpIHsKICAgICAgICByZXR1cm4gJGJpbmVyWyRub21vckJpdF07CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQoKZnVuY3Rpb24gY2V0YWtCaXREYW5EZXNpbWFsKCRhbmdrYSwgJG5vbW9yQml0KSB7CiAgICAkYml0ID0gaGl0dW5nTm9tb3JCaXQoJGFuZ2thLCAkbm9tb3JCaXQpOwogICAgaWYgKCRiaXQgPT09IG51bGwpIHsKICAgICAgICBlY2hvICJCaXQga2UtJG5vbW9yQml0OiBOVUxMID0gTlVMTFxuIjsKICAgIH0gZWxzZWlmICgkYml0ID09IDEpIHsKICAgICAgICBlY2hvICJCaXQga2UtJG5vbW9yQml0OiAxID0gIiAuICgyICoqICRub21vckJpdCkgLiAiXG4iOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICJCaXQga2UtJG5vbW9yQml0OiAwID0gTlVMTCBcbiI7CiAgICB9Cn0KCi8vIHRlc3QKY2V0YWtCaXREYW5EZXNpbWFsKDEzLCAwKTsgLy8gQml0IGtlLTA6IDEgPSAxCmNldGFrQml0RGFuRGVzaW1hbCgxMywgMSk7IC8vIEJpdCBrZS0xOiAwID0gCmNldGFrQml0RGFuRGVzaW1hbCgxMywgMik7IC8vIEJpdCBrZS0yOiAxID0gNApjZXRha0JpdERhbkRlc2ltYWwoMTksIDQpOyAvLyBCaXQga2UtNDogMSA9IDE2CmNldGFrQml0RGFuRGVzaW1hbCg5LCAwKTsgIC8vIEJpdCBrZS0wOiAxID0gMQpjZXRha0JpdERhbkRlc2ltYWwoOSwgMSk7ICAvLyBCaXQga2UtMDogMSA9IDEKY2V0YWtCaXREYW5EZXNpbWFsKDksIDMpOyAgLy8gQml0IGtlLTM6IDEgPSA4Cj8+