我该如何用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/