十进制转换为二进制,在数学上有很多种解法,可以每次除2后取余数,可以减去2的n次幂,n递减。不过在C语言中,有简单巧妙的算法。
我们知道任何数在计算机中都是以二进制代码存储的,在C语言课本中位操作一般讲的比较简单,而这个例子中,我看到了位操作的巧妙之处。在二进制中每次左移一位,相当于*2,而且有按位与&这个功能,所以我们可以想,用一位二进制左移,然后跟10的二进制按位与,这一就能表达出10进制的二进制形式了。
由于网上到处复制别人成果的现象泛滥,而且不加分析,本人对此种现象深恶痛觉。但是鉴于本人技术有限,自学C++第二天,所以此段代码仍是参考别人,但是经过自己添加修改,自己也分析掌握了其中的技巧,相信下一次我能完全自己学出代码来,加油!
/*十进制转换为二进制*/
#include "Stdio.h"
#include "Conio.h"
#define N 16 /*16表示int是16位的位容器*/
void change(int X)
{
int i;
printf("The result of change is:" );
for(i=1;i<=N;i++)
{
if((1<<N-i)&X) /*1左移N-i,只要二进制中有一位按位与之后为1就输出1*/
printf("1");
else
printf("0");
}
getchar();
}
int main(void)
{
int x;
printf("Input number:");
scanf("%d",&x);
change(x);
getchar();
return 0;
}