// Lusi Alifatul Laila
<?php
function hitungNomorBit($angka, $nomorBit) {
// Cek jika nomor bit negatif, return null
if ($nomorBit < 0) {
return null;
}
$currentBit = 0; // Untuk melacak posisi bit saat ini
$result = 0; // Untuk menyimpan hasil
// Konversi angka ke biner dengan pembagian 2 berulang
while ($angka > 0) {
$bit = $angka % 2; // Ambil bit paling kanan
// Jika currentBit sama dengan nomorBit yang diminta
if ($currentBit == $nomorBit) {
// Hitung nilai desimal dari bit ini
// Menggunakan left shift untuk menghitung 2^nomorBit
$value = $bit * (1 << $nomorBit);
return $value === 0 ? 0 : $value;
}
$angka = (int)($angka / 2); // Geser ke bit berikutnya
$currentBit++; // Increment posisi bit
}
// Jika sampai sini berarti nomorBit melebihi panjang biner angka
return null;
}
// Test case
echo hitungNomorBit(13, 0) ?? 'null'; // Output: 1
echo "\n";
echo hitungNomorBit(13, 1) ?? 'null'; // Output: 0
echo "\n";
echo hitungNomorBit(13, 2) ?? 'null'; // Output: 4
echo "\n";
echo hitungNomorBit(13, 3) ?? 'null'; // Output: 8
echo "\n";
echo hitungNomorBit(13, 4) ?? 'null'; // Output: null
?>
Ly8gTHVzaSBBbGlmYXR1bCBMYWlsYQoKPD9waHAKZnVuY3Rpb24gaGl0dW5nTm9tb3JCaXQoJGFuZ2thLCAkbm9tb3JCaXQpIHsKICAgIC8vIENlayBqaWthIG5vbW9yIGJpdCBuZWdhdGlmLCByZXR1cm4gbnVsbAogICAgaWYgKCRub21vckJpdCA8IDApIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIAogICAgJGN1cnJlbnRCaXQgPSAwOyAvLyBVbnR1ayBtZWxhY2FrIHBvc2lzaSBiaXQgc2FhdCBpbmkKICAgICRyZXN1bHQgPSAwOyAvLyBVbnR1ayBtZW55aW1wYW4gaGFzaWwKICAgIAogICAgLy8gS29udmVyc2kgYW5na2Ega2UgYmluZXIgZGVuZ2FuIHBlbWJhZ2lhbiAyIGJlcnVsYW5nCiAgICB3aGlsZSAoJGFuZ2thID4gMCkgewogICAgICAgICRiaXQgPSAkYW5na2EgJSAyOyAvLyBBbWJpbCBiaXQgcGFsaW5nIGthbmFuCiAgICAgICAgCiAgICAgICAgLy8gSmlrYSBjdXJyZW50Qml0IHNhbWEgZGVuZ2FuIG5vbW9yQml0IHlhbmcgZGltaW50YQogICAgICAgIGlmICgkY3VycmVudEJpdCA9PSAkbm9tb3JCaXQpIHsKICAgICAgICAgICAgLy8gSGl0dW5nIG5pbGFpIGRlc2ltYWwgZGFyaSBiaXQgaW5pCiAgICAgICAgICAgIC8vIE1lbmdndW5ha2FuIGxlZnQgc2hpZnQgdW50dWsgbWVuZ2hpdHVuZyAyXm5vbW9yQml0CiAgICAgICAgICAgICR2YWx1ZSA9ICRiaXQgKiAoMSA8PCAkbm9tb3JCaXQpOwogICAgICAgICAgICByZXR1cm4gJHZhbHVlID09PSAwID8gMCA6ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGFuZ2thID0gKGludCkoJGFuZ2thIC8gMik7IC8vIEdlc2VyIGtlIGJpdCBiZXJpa3V0bnlhCiAgICAgICAgJGN1cnJlbnRCaXQrKzsgLy8gSW5jcmVtZW50IHBvc2lzaSBiaXQKICAgIH0KICAgIAogICAgLy8gSmlrYSBzYW1wYWkgc2luaSBiZXJhcnRpIG5vbW9yQml0IG1lbGViaWhpIHBhbmphbmcgYmluZXIgYW5na2EKICAgIHJldHVybiBudWxsOwp9CgovLyBUZXN0IGNhc2UKZWNobyBoaXR1bmdOb21vckJpdCgxMywgMCkgPz8gJ251bGwnOyAgLy8gT3V0cHV0OiAxIAplY2hvICJcbiI7CmVjaG8gaGl0dW5nTm9tb3JCaXQoMTMsIDEpID8/ICdudWxsJzsgIC8vIE91dHB1dDogMCAKZWNobyAiXG4iOwplY2hvIGhpdHVuZ05vbW9yQml0KDEzLCAyKSA/PyAnbnVsbCc7ICAvLyBPdXRwdXQ6IDQgCmVjaG8gIlxuIjsKZWNobyBoaXR1bmdOb21vckJpdCgxMywgMykgPz8gJ251bGwnOyAgLy8gT3V0cHV0OiA4IAplY2hvICJcbiI7CmVjaG8gaGl0dW5nTm9tb3JCaXQoMTMsIDQpID8/ICdudWxsJzsgIC8vIE91dHB1dDogbnVsbCAKPz4=