创建一个从0到N的整数的2D位数组

时间:2019-05-16 21:01:23

标签: multidimensional-array integer

基本上,我正在尝试在整数数组中写入从0到N的所有数字的二进制表示形式。

例如:假设N = 7,我最多需要3位。我想制作一个看起来像这样的数组:

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1 

我尝试过此操作,这是对以下已回答问题(C - Convert Integer to Binary Array)的代码的修改:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void int_to_bin_digitvector(unsigned int in, int count, int** out)
{
    unsigned int mask = 1U << (count-1);
    for (int j = 0; j < in; j++)
    {
        for (int i = 0; i < count; i++)
        {
            out[j][i] = (j & mask) ? 1 : 0;
            j <<= 1;
        }
    }

}

int main(int argc, char* argv[])
{
    int num;
    if (argc == 1)
        num = 40;
    else
        num = atoi(argv[1]);

    int (*digit)[8] = malloc(num*sizeof(*digit));

    int_to_bin_digitvector(num, 8, digit);

    for (int j = 0; j < num; j++)
    {
        for (int i= 0; i < 8; i++ )
        {
            printf("%d\t",digit[j][i]);
        }
        printf("\n");
    }

    free(digit);
    return 0;
}

这似乎不起作用,我是C的新手。我猜测某种程度上,我正在创建的数组未正确解释为无法馈送到创建数组的函数中。

0 个答案:

没有答案