如何在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;
}
}
答案 0 :(得分:1)
扫描位数的想法是从输入编号的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'