在C语言中,如何用数组来实现2进制转换为10进制?

2024年11月30日 07:59
有2个网友回答
网友(1):

用数组来实现2进制转换为10进制的方法:

参考代码:

#include
#include
viod main()
{
int i,n,k=1,a[50]; //50个二进制位
printf("enter n:");
scanf("%d",&n);
if(n<=0) exit(0); //小于等于0的直接退出
a[0]=n%2;
do
{
n=n/2;
i=n%2;
a[k++]=i;
}while(n!=0);
for(i=49;a[i]==0;i--) ; //找到二进制开始的地方,也就是最后一个余数在数组中的位置
for(;i>-1;i--)
printf("%d",a[i]);
}

网友(2):

问题不是很清楚,是一个'1' 和‘0’ 的char[] 作为input,然后一个int 作为结果的话,可以这样写:
比如进来时“10100010001”这样一个用char[] 表示的string的话
int convert(char * arg)
{
int result = 0;

//先找长度

int length = strlen(arg);

//用pos来找正确的bit position, 因为 index 0 对应的是bit pos, 1 对应 pos -1, etc
int pos = length - 1;

for (int i = 0; i
{
result + = (int)(arg[i] - '0')<<(pos - i);
}

return result;

}

如果想程序跑的快点可以加一个 #pragma omp parallel for (+:result) firstprivate(i) 在for循环前面一行, 当然如果题主不需要就当没看到这个啦, xD

希望解答了你的问题