我想让printf函数从右到左打印,因为这个程序将数字的值转换为二进制,并且我希望它以适当的形式打印,例如,如果我转换16,它的写法是00001,但是它必须看起来像那个10000,所以有人知道如何提前完成这个任务吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,rem;
printf("please enter number: ");
scanf("%d",&x);
while (x !=0)
{
rem=x%2;
if (rem==0)
{
printf("0");
}
else
{
printf("1");
}
x = x/2;
rem = 0;
}
return 0;
}

发布于 2016-01-25 14:08:58
下面是:
void print_binary(int x)
{
int skip = 1;
unsigned int mask = 1 << 31;
while(mask > 0){
if(x & mask){
skip = 0;
printf("1");
}else{
if(!skip) printf("0");
}
mask >>= 1;
}
printf("\n");
}这将打印不带尾随零的二进制数字。
如果希望将结果存储在字符串中,可以使用:
#include <string.h>
void int_to_binary(int x, char * buff) // buff size must be >= 32 !
{
buff[0] = '\0'; // ensure string ends with \0
unsigned int mask = 1 << 31;
for (; mask > 0; mask >>= 1)
{
strcat(buff, (x & mask) ? "1" : "0");
}
}若要检查这两个代码,请使用:
int main(int argc, char* argv[])
{
int x;
printf("please enter number: ");
scanf("%d",&x);
char bin[32];
int_to_binary(x, bin);
printf("%s\n", bin);
print_binary(x);
}我们所做的是使用一个掩码,它在二进制中是一个"1“,从最左边开始,在每个循环中向右移动一步。"&“是一个咬人操作(我让你在谷歌上搜索它是如何工作的)。如果你需要更多的解释,可以随便问。
发布于 2016-01-25 13:45:06
#include<stdio.h>
#include<stdlib.h>
int main()
{
int binary[20];
int q,i=0;
printf("Enter the decimal no\n");
scanf("%d",&q);
while(q > 0)
{
binary[i]=q%2;
i++;
q=q/2;
}
for(int j=i-1;j>=0;j--)
{
printf("%d",binary[j]);
}
return 0;
}https://stackoverflow.com/questions/34993886
复制相似问题