#include <stdio.h>
int hitungNomorBit( int angka, int nomorBit) {
if ( nomorBit != 0 && nomorBit != 1 ) {
return - 1 ;
}
if ( angka == 0 ) {
if ( nomorBit == 0 ) {
return 1 ;
} else {
return 0 ;
}
}
int HasilAkhir = 0 ;
while ( angka > 0 ) {
int bitTerakhir = angka & 1 ;
if ( bitTerakhir == nomorBit) {
HasilAkhir++;
}
angka = angka >> 1 ;
}
return HasilAkhir;
}
int main( ) {
int angka_test = 13 ;
int hasil1 = hitungNomorBit( angka_test, 0 ) ;
printf ( "hitungNomorBit(13, 0) => mengeluarkan hasil bilangan desimal %d\n " , hasil1
) ;
int hasil2 = hitungNomorBit( angka_test, 1 ) ;
printf ( "hitungNomorBit(13, 1) => mengeluarkan hasil bilangan desimal %d\n " , hasil2
) ;
int hasil3 = hitungNomorBit( angka_test, 2 ) ;
if ( hasil3 == - 1 ) {
printf ( "hitungNomorBit(13, 2) => mengeluarkan hasil null \n " ) ; } else {
printf ( "hitungNomorBit(13, 2), %d\n " , hasil3
) ; }
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgaGl0dW5nTm9tb3JCaXQoaW50IGFuZ2thLCBpbnQgbm9tb3JCaXQpIHsKICAgIGlmIChub21vckJpdCAhPSAwICYmIG5vbW9yQml0ICE9IDEpIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBpZiAoYW5na2EgPT0gMCkgewogICAgICAgIGlmIChub21vckJpdCA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAxOyAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gMDsgCiAgICAgICAgfQogICAgfQoKICAgIGludCBIYXNpbEFraGlyID0gMDsKCiAgICB3aGlsZSAoYW5na2EgPiAwKSB7CiAgICAgICAgaW50IGJpdFRlcmFraGlyICA9IGFuZ2thICYgMTsKCiAgICAgICAgaWYgKGJpdFRlcmFraGlyID09IG5vbW9yQml0KSB7CiAgICAgICAgICAgIEhhc2lsQWtoaXIrKzsKICAgICAgICB9CgogICAgICAgIGFuZ2thID0gYW5na2EgPj4gMTsKICAgIH0KCiAgICByZXR1cm4gSGFzaWxBa2hpcjsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgYW5na2FfdGVzdCA9IDEzOwoKICAgIGludCBoYXNpbDEgPSBoaXR1bmdOb21vckJpdChhbmdrYV90ZXN0LCAwKTsKICAgIHByaW50ZigiaGl0dW5nTm9tb3JCaXQoMTMsIDApID0+IG1lbmdlbHVhcmthbiBoYXNpbCBiaWxhbmdhbiBkZXNpbWFsICVkXG4iLCBoYXNpbDEpOwoKICAgIGludCBoYXNpbDIgPSBoaXR1bmdOb21vckJpdChhbmdrYV90ZXN0LCAxKTsKICAgIHByaW50ZigiaGl0dW5nTm9tb3JCaXQoMTMsIDEpID0+IG1lbmdlbHVhcmthbiBoYXNpbCBiaWxhbmdhbiBkZXNpbWFsICVkXG4iLCBoYXNpbDIpOwoKICAgIGludCBoYXNpbDMgPSBoaXR1bmdOb21vckJpdChhbmdrYV90ZXN0LCAyKTsKICAgIAogICAgaWYgKGhhc2lsMyA9PSAtMSkgewogICAgICAgIHByaW50ZigiaGl0dW5nTm9tb3JCaXQoMTMsIDIpID0+IG1lbmdlbHVhcmthbiBoYXNpbCBudWxsIFxuIik7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50ZigiaGl0dW5nTm9tb3JCaXQoMTMsIDIpLCAlZFxuIiwgaGFzaWwzKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==