fork download
  1. def hitungNomorBit(angka, nomorBit):
  2. # Langkah 1: Validasi input untuk nomorBit.
  3. # Jika bukan 0 atau 1, maka input tidak valid.
  4. if nomorBit != 0 and nomorBit != 1:
  5. return None
  6.  
  7. # Langkah 2: Menangani kasus khusus untuk angka 0.
  8. # Representasi biner dari 0 adalah '0'.
  9. if angka == 0:
  10. if nomorBit == 0:
  11. return 1
  12. else:
  13. return 0
  14.  
  15. # Langkah 3: Menyiapkan variabel untuk proses perhitungan.
  16. jumlah_bit = 0
  17. sisa_angka = angka
  18.  
  19. # Langkah 4: Melakukan loop konversi sambil menghitung.
  20. # Loop ini akan berjalan sampai tidak ada lagi yang bisa dibagi.
  21. while sisa_angka > 0:
  22. # Mendapatkan bit terakhir dari angka saat ini menggunakan modulo 2.
  23. bit_sekarang = sisa_angka % 2
  24.  
  25. # Memeriksa apakah bit yang ditemukan sesuai dengan yang dicari.
  26. if bit_sekarang == nomorBit:
  27. jumlah_bit += 1
  28.  
  29. # Memperbarui angka untuk iterasi selanjutnya dengan pembagian integer.
  30. sisa_angka = sisa_angka // 2
  31.  
  32. # Langkah 5: Mengembalikan hasil akhir perhitungan.
  33. return jumlah_bit
  34.  
  35. # --- Pengujian Kode ---
  36. # Saya melakukan beberapa pengujian untuk memastikan logika berjalan benar.
  37.  
  38. # Contoh dari soal
  39. print("hitungNomorBit(13, 0) -> {}".format(hitungNomorBit(13, 0)))
  40. print("hitungNomorBit(13, 1) -> {}".format(hitungNomorBit(13, 1)))
  41. print("hitungNomorBit(13, 2) -> {}".format(hitungNomorBit(13, 2)))
  42.  
  43. # Contoh lain
  44. print("hitungNomorBit(100, 0) -> {}".format(hitungNomorBit(100, 0)))
  45. print("hitungNomorBit(100, 1) -> {}".format(hitungNomorBit(100, 1)))
Success #stdin #stdout 0.08s 14180KB
stdin
Standard input is empty
stdout
hitungNomorBit(13, 0) -> 1
hitungNomorBit(13, 1) -> 3
hitungNomorBit(13, 2) -> None
hitungNomorBit(100, 0) -> 4
hitungNomorBit(100, 1) -> 3