fork download
  1. #include <stdio.h>
  2.  
  3. int hitungNomorBit(int angka, int nomorBit) {
  4. // Jika angka negatif atau nomorBit negatif, kembalikan -1 (null)
  5. if (angka < 0 || nomorBit < 0) {
  6. return -1;
  7. }
  8.  
  9. int count = 0; // Menghitung jumlah bit 1
  10. int temp = angka;
  11. int bitPosition = 0;
  12.  
  13. // Iterasi hingga nomorBit atau hingga angka menjadi 0
  14. while (temp > 0 && bitPosition <= nomorBit) {
  15. // Periksa bit paling kanan menggunakan AND dengan 1
  16. if (temp & 1) {
  17. count++;
  18. }
  19. // Geser ke kanan untuk memeriksa bit berikutnya
  20. temp = temp >> 1;
  21. bitPosition++;
  22. }
  23.  
  24. // Jika nomorBit lebih besar dari jumlah bit dalam angka, kembalikan -1
  25. if (nomorBit >= bitPosition && temp == 0) {
  26. return -1;
  27. }
  28.  
  29. return count;
  30. }
  31.  
  32. int main() {
  33. // Contoh pengujian
  34. printf("%d\n", hitungNomorBit(13, 0)); // Harusnya akan menghasilkan output: 1
  35. printf("%d\n", hitungNomorBit(13, 1)); // Harusnya akan menghasilkan output: 2
  36. printf("%d\n", hitungNomorBit(13, 2)); // Harusnya akan menghasilkan output: 3
  37. printf("%d\n", hitungNomorBit(13, 3)); // Harusnya akan menghasilkan output: 4
  38. printf("%d\n", hitungNomorBit(13, 4)); // Harusnya akan menghasilkan output: -1 (null)
  39. return 0;
  40. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
1
1
2
3
-1