用代码实现C函数功能——十进制转换为二进制
2011-03-14 19:55
483 查看
十进制转换为二进制,在数学上有很多种解法,可以每次除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;
}
我们知道任何数在计算机中都是以二进制代码存储的,在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;
}
相关文章推荐
- Python实现的十进制小数与二进制小数相互转换功能
- 代码实现十进制转换为二进制、十六进制(源码)
- 用C#代码实现二进制与十进制的互相转换
- 用C#代码实现二进制与十进制的互相转换
- 用C#代码实现二进制与十进制的互相转换
- 使用bitset实现二进制和十进制的相互转换
- php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
- 用js实现的十进制的颜色值转换成十六进制的代码
- 汇编-&gt;十进制到二进制书转换的程序实现
- 递归代码将十进制转换成二进制输出
- 实现二进制与十进制之间的相互转换
- 80x86汇编编程:实现十进制或十六进制向二进制的转换
- 使用bitset实现二进制和十进制的相互转换
- Asp.Net中的字符串和HTML十进制编码转换实现代码
- 用代码实现C函数功能——sqrt
- C语言实现十进制转换为二进制
- 通过编程实现将十进制整数转换为二进制
- 用递归法实现一个十进制数据转换成二进制
- c/c++代码 No.13 二进制与十进制相互转换
- C++实现二进制、八进制、十进制、十六进制的相互转换