Перовод побитовой строчки матрицы в десятичное число - 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); } }
Объяснение кода листинга программы
В этом коде выполняется следующие действия:
- Включаются необходимые заголовочные файлы:
stdlib.h
- для работы с функциейrand()
и операторомrand()
;stdio.h
- для работы с функциями ввода-вывода;math.h
- для работы с функциейpow()
.
- Создается матрица
mx
размером 3x8, заполненная случайными значениями от 0 до 1 с помощью функцииrand()
и оператора%
. - Выполняется цикл по каждому элементу матрицы.
- Для каждого элемента матрицы создаются две переменные:
n
- для хранения результата преобразования битовой строки в десятичное число;k
- для подсчета количества битов в текущей битовой строке.
- Выполняется внутренний цикл по каждому биту в текущей битовой строке.
- Внутренний цикл начинается с самого старшего бита (7-й позиции) и заканчивается самым младшим битом (0-й позиции).
- Каждый бит матрицы преобразуется в десятичное число с помощью функции
printf()
и оператора%i
. - **К текущему результату
n
добавляется текущий бит, умноженный на 2 в степениk
с помощью функцииpow()
. - **После внутреннего цикла выводится текущий результат
n
и значение переменнойk
. - После завершения внешнего цикла выводится результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д