Подсчет количества битов, выставленных в единицу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать программу подсчитывающая количество битов, выставленных в единицу у числа типа long и double. Сами значения чисел вводятся с клавиатуры.

Решение задачи: «Подсчет количества битов, выставленных в единицу»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int num_bits(int n)
{
    if (n==0) return 0;
    return (n%2)+num_bits(n/2);
}    
int main(int argc, char *argv[])
{
  int n;
  printf("n=");
  scanf("%d",&n);
  printf("number of bits=%d\n",num_bits(n)); 
  system("PAUSE");  
  return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с I/O и выполнения операций с основаниями систем
  2. Определяем функцию с именем num_bits, которая принимает целочисленный аргумент n и возвращает количество битов, выставленных в единицу
  3. Проверяем базовый случай - если n равно нулю, то функция возвращает 0, так как в двоичном числе нет битов, выставленных в единицу
  4. В противном случае функция возвращает сумму двух значений: n % 2 (остаток от деления n на 2, то есть последний биту n) и результат рекурсивного вызова функции num_bits, в котором аргументом является n/2 (это биты, расположенные в двоичном числе n до последнего бита)
  5. В функции main считываем целочисленный аргумент n с помощью функции scanf
  6. Вызываем функцию num_bits, передавая ей в качестве аргумента n
  7. Выводим результат работы функции num_bits на экран с помощью функции printf
  8. Ожидаем нажатия любой клавиши с помощью функции system(PAUSE)
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы