Преобразовать строку в последовательность бит - C (СИ)
Формулировка задачи:
Привет всем! Тема хоть и заезженная, но того что я ищу (примеров) я не нашел. Задача: ввести произвольную строку и перевести ее в 0/1 формат, а затем сделать подсчет количества 1 и 0. Пишу под обычный Си
Решение задачи: «Преобразовать строку в последовательность бит»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
void main(void)
{
unsigned char str[10],b;
int n,i,j,c1,c0;
printf("input string:"); scanf("%s",str);
n=strlen(str);
c1=0;
c0=0;
for(i=0;i<n;i++)
{
b=str[i];
for(j=0;j<8;j++)
{
if( (b&128) == 128) c1++,printf("1");
else c0++,printf("0");
b=b<<1;
}
}
printf("\nЕдиниц: %d",c1);
printf("\nНулей: %d",c0);
}
Объяснение кода листинга программы
Вывод программы позволяет пользователю ввести строку, после чего программа преобразует эту строку в бинарную последовательность и выводит количество единиц и нулей в этой последовательности. Вот список действий, которые выполняет программа:
- Подключает необходимые заголовочные файлы.
- Инициализирует массив строк и переменные.
- Запрашивает у пользователя ввод строки с помощью функции scanf.
- Вычисляет длину строки с помощью функции strlen.
- Инициализирует счетчики для единиц и нулей в бинарной последовательности.
- Используя два вложенных цикла, программа перебирает каждый символ в строке.
- Для каждого символа программа проверяет, является ли его старший бит равным 128.
- Если это так, то программа увеличивает счетчик для единиц и выводит
1. - В противном случае программа увеличивает счетчик для нулей и выводит
0. - Программа сдвигает символ вправо на один бит, чтобы перейти к следующему биту.
- По завершении вложенных циклов программа выводит количество единиц и нулей.