首页  »   编程

二进制与十进制变换

网友分享于:2013-08-29  浏览:10次
二进制与十进制转换

二进制转换

在程序处理的过程中,我们经常需要将一个整数转换成二进制或者将一个二进制数转换成整数。

二进制转换成整数主要是计算各个位置的权值并记录,然后逐次查找二进制序列的每一位如果为一则将结果加上对应位置的权值作为新的结果以此类推。

整数转换成二进制主要是进行移位相与操作,例如我们的整数范围在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;

}

相关解决方案

最新解决方案