<?php
function hitungNomorBit(int $angka, int $nomorBit): ?int
{
if ($nomorBit !== 0 && $nomorBit !== 1) {
return null;
}
if ($angka < 0) {
return 0;
}
if ($angka === 0) {
return ($nomorBit === 0) ? 1 : 0;
}
$hitungan = 0;
$tempAngka = $angka;
while ($tempAngka > 0) {
$bit = $tempAngka % 2;
if ($bit === $nomorBit) {
$hitungan++;
}
$tempAngka = intdiv($tempAngka, 2);
}
return $hitungan;
}
echo "(13, 0) " . (hitungNomorBit(13, 0) ?? "null"). "<br>";
echo "(13, 1) " . (hitungNomorBit(13, 1) ?? "null"). "<br>";
echo "(13, 2) " . (hitungNomorBit(13, 2) ?? "null"). "<br>";
echo "(0, 0) " . (hitungNomorBit(0, 0) ?? "null"). "<br>";
echo "(0, 1) " . (hitungNomorBit(0, 1) ?? "null"). "<br>";
PD9waHAKZnVuY3Rpb24gaGl0dW5nTm9tb3JCaXQoaW50ICRhbmdrYSwgaW50ICRub21vckJpdCk6ID9pbnQKewoKICAgIGlmICgkbm9tb3JCaXQgIT09IDAgJiYgJG5vbW9yQml0ICE9PSAxKSB7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgaWYgKCRhbmdrYSA8IDApIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCgogICAgaWYgKCRhbmdrYSA9PT0gMCkgewogICAgICAgIHJldHVybiAoJG5vbW9yQml0ID09PSAwKSA/IDEgOiAwOwogICAgfQoKICAgICRoaXR1bmdhbiA9IDA7CiAgICAkdGVtcEFuZ2thID0gJGFuZ2thOwogICAgd2hpbGUgKCR0ZW1wQW5na2EgPiAwKSB7CiAgICAgICAgJGJpdCA9ICR0ZW1wQW5na2EgJSAyOwoKICAgICAgICBpZiAoJGJpdCA9PT0gJG5vbW9yQml0KSB7CiAgICAgICAgICAgICRoaXR1bmdhbisrOwogICAgICAgIH0KICAgICAgICAkdGVtcEFuZ2thID0gaW50ZGl2KCR0ZW1wQW5na2EsIDIpOwogICAgfQoKICAgIHJldHVybiAkaGl0dW5nYW47Cn0KCmVjaG8gIigxMywgMCkgIiAuIChoaXR1bmdOb21vckJpdCgxMywgMCkgPz8gIm51bGwiKS4gIjxicj4iOwplY2hvICIoMTMsIDEpICIgLiAoaGl0dW5nTm9tb3JCaXQoMTMsIDEpID8/ICJudWxsIikuICI8YnI+IjsKZWNobyAiKDEzLCAyKSAiIC4gKGhpdHVuZ05vbW9yQml0KDEzLCAyKSA/PyAibnVsbCIpLiAiPGJyPiI7CmVjaG8gIigwLCAwKSAiIC4gKGhpdHVuZ05vbW9yQml0KDAsIDApID8/ICJudWxsIikuICI8YnI+IjsKZWNobyAiKDAsIDEpICIgLiAoaGl0dW5nTm9tb3JCaXQoMCwgMSkgPz8gIm51bGwiKS4gIjxicj4iOw==