fork download
  1. #include <iostream>
  2.  
  3. int hitungNomorBit(int angka, int nomorBit) {
  4. // Validasi input: nomorBit harus 0 atau 1.
  5. if (nomorBit != 0 && nomorBit != 1) {
  6. return -1;
  7. }
  8.  
  9. // Kasus kalau angka adalah 0.
  10. if (angka == 0) {
  11. return (nomorBit == 0) ? 1 : 0;
  12. }
  13.  
  14. int hitungan = 0;
  15.  
  16. // Logika untuk mencari desimal dalam binernya.
  17. while (angka > 0) {
  18. int sisa = angka % 2;
  19. // std::cout << "Sisa: " << sisa << std::endl;
  20. if (sisa == nomorBit) {
  21. hitungan++;
  22. }
  23. angka = angka / 2;
  24. // std::cout << "Angka setelah pembagian: " << angka << std::endl;
  25. // std::cout << "Hitungan saat ini: " << hitungan << std::endl;
  26. }
  27.  
  28. return hitungan;
  29. }
  30.  
  31. int main() {
  32. std::cout << "HASIL TES" << std::endl;
  33.  
  34. int hasil1 = hitungNomorBit(13, 0);
  35. std::cout << "hitungNomorBit(13, 0) -> " << hasil1 << std::endl;
  36.  
  37. int hasil2 = hitungNomorBit(13, 1);
  38. std::cout << "hitungNomorBit(13, 1) -> " << hasil2 << std::endl;
  39.  
  40. int hasil3 = hitungNomorBit(13, 2);
  41. std::cout << "hitungNomorBit(13, 2) -> ";
  42. if (hasil3 == -1) {
  43. std::cout << "null" << std::endl;
  44. } else {
  45. std::cout << hasil3 << std::endl;
  46. }
  47.  
  48. // tes tambahan jika angkanya 0
  49. // int tes4 = hitungNomorBit(0, 0);
  50. // std::cout << "hitungNomorBit(0, 0) -> " << tes4 << std::endl;
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
HASIL TES
hitungNomorBit(13, 0) -> 1
hitungNomorBit(13, 1) -> 3
hitungNomorBit(13, 2) -> null