二进制与十进制转换
二进制转换
在程序处理的过程中,我们经常需要将一个整数转换成二进制或者将一个二进制数转换成整数。
二进制转换成整数主要是计算各个位置的权值并记录,然后逐次查找二进制序列的每一位如果为一则将结果加上对应位置的权值作为新的结果以此类推。
整数转换成二进制主要是进行移位相与操作,例如我们的整数范围在2^16-1的范围内,则每次移位与0x8000相与,如果为一则输出1,为0则输出零。
代码如下:
二进制转换十进制
#include<stdio.h>
#include<string.h>
int a[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,3072,4096,5120,6144};
int main()
{
char b[16];
int i,j;
long ans=0;;
printf("输入二进制序列:\n");
gets(b);
printf("\n");
puts(b);
for(i=strlen(b)-1,j=0;i>=0;i--,j++)
{
ans = ans+(b[i]-'0')*a[j];
}
printf("最终结果为%ld\n",ans);
return 0;
}
十进制转换二进制
#include<stdio.h>
#define MAXSIZE 16
int main()
{
int x,i;
int ans[MAXSIZE];
printf("输入十进制数:\n");
scanf("%u",&x);
for(i=0;i<MAXSIZE;i++)
{
if((unsigned)(x&0x8000)!=0)
{
ans[i] = 1;
}
else
{
ans[i] = 0;
}
x = x<<1;
}
for(i=0;i<MAXSIZE;i++)
{
if(ans[i]!=0)
break;
}
for(;i<MAXSIZE;i++)
{
printf("%d",ans[i]);
}
printf("\n");
return 0;
}