我该如何用C编写代码以将十进制数字的二进制表示形式分配给char变量?

\\ x is the value of the decimal integer
\\ y is length of the binary representation

{
binary[33] = {0};

while(x!=0){
    binary[y] = (x%2)+'0';
    y--;
    x/=2;
}
}

最佳答案

扫描位数的想法是从输入数的MSB位开始,然后进行到LSB位。当首先检测到1时,即使以后再检测到0,也要开始打印/保存/无论如何。

现在是一个示例,它将打印您的数字位,直到第一个1开始打印。

#include <stdio.h>
#include "limits.h"

int main() {
    unsigned int num = 10;
    int y = 0, i;

    for (i = sizeof(num) * CHAR_BIT - 1; i >= 0; i--) {
        if (num & (1U << i)) {
            printf("1");
            y++;
        } else if (y) {
            printf("0");
            y++;
        }
    }
    printf("\n");
    return 0;
}


num = 10的输出:1010

如果要将结果存储到数组,请将printf语句替换为以下内容:outputBuffer[y] = '1''0'

关于c - 将十进制数转换为二进制表示形式的char数组:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45153792/

10-11 23:01
查看更多