Код, который я создал, просто получает десятичное число от пользователя и преобразует его в двоичный. Я пытаюсь сделать двоичный счетчик от 0 до двоичного числа введенного десятичного числа. биты двоичного числа сохраняются в массиве, и каждый бит имеет свою собственную позицию. Я понимаю, что мне придется сделать двумерный массив, чтобы сделать это, но я не знаю, как и где это реализоватьДвоичный счетчик в C двумерный
#include <stdio.h>
#include <math.h>
int main(void){
int binary,loop_number,i;
printf("Enter in your binary number :");
scanf("%d", &binary);
//loop number calculates the number of bits of the binary number
loop_number = log2(binary)+1;
int binary_array[binary][loop_number];
int newarray[binary][loop_number];
for(int n=0;n<binary;n++) {
for(i=0;i<loop_number;i++) {
if(n==1){
binary_array[n][i]=1;
} else if(n%2==0) {
binary_array[n][i]=0;
} else if(n==0) {
binary_array[n][i]=0;
} else {
binary_array[n][i]=1;
}
n = n/2;
}
//the binary array of bits is backwards here so im going to put the bits the correct way
for(int n=0;n<binary;n++) {
for(i = 0; i < loop_number; i++){
newarray[n][i] = binary_array[n][loop_number-i-1];
}
}
}
printf("\n\n");
for(int n=0;n<binary;n++){
for(i=0;i<loop_number;i++){
printf("%d",newarray[n][i]);
}
printf("\n");
}
}
Хм, преобразование в двоичное? Зачем вам нужен двухмерный массив? Я думаю, что небольшая петля сделает что-то вроде этого: 'for (i = 0, бит = 1; бит <значение; бит << = 1, i ++) array [i] = value & bit? 1: 0;' – Holger