Подсчет количества битов, выставленных в единицу - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и выполнения операций с основаниями систем
- Определяем функцию с именем num_bits, которая принимает целочисленный аргумент n и возвращает количество битов, выставленных в единицу
- Проверяем базовый случай - если n равно нулю, то функция возвращает 0, так как в двоичном числе нет битов, выставленных в единицу
- В противном случае функция возвращает сумму двух значений: n % 2 (остаток от деления n на 2, то есть последний биту n) и результат рекурсивного вызова функции num_bits, в котором аргументом является n/2 (это биты, расположенные в двоичном числе n до последнего бита)
- В функции main считываем целочисленный аргумент n с помощью функции scanf
- Вызываем функцию num_bits, передавая ей в качестве аргумента n
- Выводим результат работы функции num_bits на экран с помощью функции printf
- Ожидаем нажатия любой клавиши с помощью функции system(
PAUSE
) - Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д