将整数转换为二进制并将值存储到数组中

时间:2014-11-15 16:55:40

标签: c

我要做的是将整数转换为二进制并将这些值存储到数组中。到目前为止我所做的是我创建了一个for循环来获取数字范围并使用算法将这些转换为二进制。然而,这是我的问题:当我希望每个整数在一行中转换为二进制并且形式为0000 0001时,我的程序只在每一行打印1个值(0或1)。我正在努力的另一件事是存储这些值成阵列。

 for(m=0;m<10000;m++)
    {
        const char baseDigits[2]= {'0','1'};
        int convertedNumber[1000];
        int numberToconvert;
        int NextDigit = 0;
        int base = 2;
        int index = 0;
        //get number and base;
        numberToconvert = m;
        //convert to base2
        do
        {
            convertedNumber[index] = numberToconvert % base;
            ++index;
            numberToconvert = numberToconvert / base;

        }
        while(
            numberToconvert != 0
        );

        //display results in reverse order
        for(--index;index>=0;--index)
        {
            NextDigit = convertedNumber[index];
            printf("%c \n", baseDigits[NextDigit]);
        }

    }

2 个答案:

答案 0 :(得分:0)

使用改进的for循环从printf中删除\ n,如下所示:

index--;
for(;index>=0;--index) {
    NextDigit = convertedNumber[index];
    printf("%c", baseDigits[NextDigit]);//you could have used %d and printed directly convertedNumber[index]
}
printf("\n");

答案 1 :(得分:0)

int i = 0;
for(--index;index>=0;--index)
{
    NextDigit = convertedNumber[index];
    printf("%c", baseDigits[NextDigit]);
    if(index && ++i % 4 == 0)
        printf("%c", ' ');
}
printf("\n");