Перовод побитовой строчки матрицы в десятичное число - C (СИ)

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

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

Доброго времени суток. Недавно столкнулся с проблемой в одной задаче:

Матрица B(a,b) состоит с нулей и едениц. Считая каждую строку матрицы побитовой записью двоичного числа, подсчитать и вывести десятичное число для всех строчек матрицы.

Единственный мой вопрос, это как строчку матрицы перевести в десятичное число? Вот половина кода:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main()
{
    int i,j,a;
    scanf("%i", &a);
    int mx[a][8];
    for(i=0;i<a;i++)
    for(j=0;j<8;j++)
    scanf("%i", &mx[i][j]);
    
    for(i=0;i<a;i++)
        {
            for(j=0;j<8;j++)
                {
                    printf("%2.0i", mx[i][j]);
                }
            printf("\n");
        }
 
//чудо-код который двоичные числа переводит в десятичные...
    
}

Решение задачи: «Перовод побитовой строчки матрицы в десятичное число»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{
    int i,j;
    int mx[3][8];    
    for(i=0;i<3;i++)
        for(j=0;j<8;j++)
            mx[i][j] = rand()%2;
    
    for(i=0;i<3;i++)
        {
            int n = 0, k = 0;
            for(j=7;j>=0;j--)
                {
                    printf("%i", mx[i][7-j]);
                    n += pow(2, k) * mx[i][j];
                    k++;
                }
            printf(" %i \n", n);
        }    
}

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

В этом коде выполняется следующие действия:

  1. Включаются необходимые заголовочные файлы:
    • stdlib.h - для работы с функцией rand() и оператором rand();
    • stdio.h - для работы с функциями ввода-вывода;
    • math.h - для работы с функцией pow().
  2. Создается матрица mx размером 3x8, заполненная случайными значениями от 0 до 1 с помощью функции rand() и оператора %.
  3. Выполняется цикл по каждому элементу матрицы.
  4. Для каждого элемента матрицы создаются две переменные:
    • n - для хранения результата преобразования битовой строки в десятичное число;
    • k - для подсчета количества битов в текущей битовой строке.
  5. Выполняется внутренний цикл по каждому биту в текущей битовой строке.
  6. Внутренний цикл начинается с самого старшего бита (7-й позиции) и заканчивается самым младшим битом (0-й позиции).
  7. Каждый бит матрицы преобразуется в десятичное число с помощью функции printf() и оператора %i.
  8. **К текущему результату n добавляется текущий бит, умноженный на 2 в степени k с помощью функции pow().
  9. **После внутреннего цикла выводится текущий результат n и значение переменной k.
  10. После завершения внешнего цикла выводится результат.

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


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

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

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