首先将字符的数据使用c库函数atoi()转换为int 类型计算,在将值以字符的形式存储在数组中

适合不太大的小数

strrev() 函数反转字符串

1、使用int buff[]存储二进制数

2、使用递归

3、使用字符存储二进制数

1、使用int buff[128] 类型存储二进制数值
char* num_to_io(int num)
{
	int a = 0;
	int buff[128] = {0};
	int two[128] = {0};
	for(int i = 0;1;i++)
	{
		buf[i] = num%2;
		num = num/2;
		if(num == 1)
		{
			buf[i+1] = num;
			a = i;
			break;
		}
		
	}
	for(int j =0; j <= a;j++)
	{
		two[j] = buff[a-j];
		
	}
	
	for(int k = 0;k <= a;k++)
	{
		printf("%d",two[k]);
	}
	return 0;
}

2、递归
#include <stdio.h>

void convert(int n)
{
	if(n > 1){
		convert(n / 2)
	}
	printf("%d",n%2);
}

int main()
{
	int n;
	scanf("%d",&n);
	convert(n);
	return 0;
}

3、字符存储
//更改为字符存储
int main()
{
	int num = 255;
	int a = 0;
	char buff[128] = {0};
	char two[128]  = {0};
	
	for(int i = 0;1;i++)
	{
		if(num%2 == 1)
		{
			buff[i] = '1';
		}else{
			buff[i] = '0';
		}
		num = num/2;
		if(num == 1)
		{
			buff[i+1] = '1';
			a = i+1;
			break;
		}
	}
	printf("the num : ");
	for(int j = a; j>=0;j--)
	{
		two[a-j] = buff[j];
	}
	printf("the m is %s\n",two);
	return 0;
}

字符串的二进制数转换为十进制的int类型

字符串中的单个字符的比较

将二进制转换为十进制数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char *num = "1111";
	int a = strlen(num);
	printf("the a is %d\n",a);
	int numa = 0;
	int numb = 0;
	for(int i = a-1;i>=0 ;i++)
	{
		if(*num == '1')
		{
			numa = 2;
			for(int j = i-1;j > 0;j--)
			{
				numa = numa*2;
			}
			if(i == 0)
			{
				numa = 1;
			}
			numb = numa + numb;
			printf("the i is %d and numb us %d\n",i,numb);
			num++;
		}
	}
	printf("the numb is %d \n",numb);
}

头文件:#include <math.h>

pow() 函数用来求 x 的 y 次幂(次方),其原型为:
    double pow(double x, double y);

pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。

可能导致错误的情况:

  • 如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
  • 如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
  • 如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
  • 如果返回值 ret 太大或者太小,将会导致 range error 错误。


错误代码:

  • 如果发生 domain error 错误,那么全局变量 errno 将被设置为  EDOM;
  • 如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。


注意,使用 GCC 编译时请加入-lm。

更多推荐

二进制数之间的相互转换