
#include<stdioh>
#include<mathh>
int main()
{
int a[10] = {1,0,0,1,0,1,1,0,0,0};//这里只是预先写好的二进制数,可以自行改为主动输入,主要体现过程
int i = 0;
int sum = 0;
for(i = 9;i>=0;i--)//9为数组最后一位
{
sum = sum + a[i];pow(2,abs(i-9));//i- 9 的绝对值判定乘以2 的几次方
}
printf("%d\n",sum);
return 0;
}
#include<stdioh>
#include<stringh>
int main()
{
int n,a[20],num=0,i,j;
scanf("%d",&n);
printf("输入二进制:\n");
for(i=1;i<=n;i++)
{
scanf("%s",a);
for(j=strlen(a)-1; j>=0; j--)
{
num=2;
num+=a[i]-'0';
}
printf("%d\n", num);
}
return 0;
}
#include<stdioh>
#include<stringh>
#define
MAX
8
//可根据自己要输入2进制长度自动变动
int
main()
{
char
s[MAX],
i,
p
=
1,
x
=
0;
gets(s);
for(i
=
strlen(s);
i
>
0
;
i--)
{
x
=
x
+
(s[i-1]-'0')p;
p=2;
}
printf("转换为十进制为:%d\n",x);
return
0;
}
二进制转十进制
n 为输入的二进制数,d用来处理该数。
k为标志位,当k为1时表示输入的数有问题,需要重新输入。
i为每次分解的个位数;j为二进制的权值;m为累计的十进制和;p为输入的数的位数,超过10时,该数越界,需要重新输入,定k=1。
程序如下:#include <conioh
main(){long int n,d;
int k,i,j,m,p;do{k=0; m=0;j=1;i=0;p=0;
printf("\ninput an number only includes 0 or 1:");
scanf("%ld",&n);if(n<0)k=1;d=n;while(d){i=d%10;p++;
if(i1 || p10)
int fun(int j);
void main()
{
int i;
char Binary[100];
cout << "请输入要转化为10进制的2进制数" << endl;
cin >> Binary;
char p = Binary;
i = strlen(Binary) - 1;
int Dec = 0;
int j = 0;
while (i >= 0)
{
Dec = Dec + ((p + i) - 48 ) fun(j);
j++;
i--;
}
cout << Dec << endl;
}
int fun(int j)
{
int JI = 1;
for(int i = 0; i < j; i++)
{
JI = JI 2;
}
return JI;
}
这个是比较简单易懂的函数,看看吧。当然可以用另一种方法,就是新手会比较容易晕。
#include<stdioh>
int Sum(int a[]);
int power(int b);
int main()
{
int array[8],i;
printf("输入一个8位二进制数:");
for(i=0;i<8;i++)
{
scanf("%1d",&array[i]);
}
printf("转换为十进制数后是:%d\n",Sum(array));
return 0;
}
int Sum(int a[])
{
int n,i,sum=0,term;//n为指数,term为每一项的值,如1(22),sum为总和
for(i=0,n=7;i<8;i++,n--)
if(n>=0)
{term=a[i]power(n);
sum=sum+term;
}
return sum;
}
int power(int b)
{
int i=2,j=1;
if(b==0)
i=1;
for(;j<b;j++)
i=2i;
return i;
}
一下两个程序均在VC在编译通过。
/
如果这个二进制数比较大的话, 大到只能用数组储存这个二进制数,
当然如果大到转化成10进制int存不下的情况那另当别论
/
#include<stdioh>
#include<stringh>
int main()
{
char a[33];
int i, num = 0;
scanf("%s", a);
for(i=strlen(a)-1; i>=0; i--)
{
num=2; /如果用位运算的话,速度会更快/
num+=a[i]-'0';
}
printf("%d\n", num);
return 0;
}
/
如果这个二进制数的位数不超过10位的话
可用这个程序
/
#include<stdioh>
int main()
{
int num = 0, a, j=1;
scanf("%d", &a);
while(a)
{
num += (a%10) j;
a /= 10;
j = 2;
}
printf("%d\n", num);
return 0;
}
(1)BinToDec函数代码如下:
unsigned int BinToDec(char s) {
unsigned int num = 0, base = 1;
int i, n = strlen(s);
for (i = n - 1; i >= 0; i--) {
num += base (s[i] - '0');
base <<= 1;
}
return num;
}
(2)DecToBin函数代码如下:
char DecToBin(unsigned int num) {
char s = (char )malloc(32 sizeof(char));
memset(s, 0, sizeof(s));
char c;
int len = 0, i, j;
while (num) {
s[len++] = '0' + (num % 2);
num >>= 1;
}
for (i = 0, j = len - 1; i < j; i++, j--) { // 翻转字符串
c = s[i];
s[i] = s[j];
s[j] = c;
}
return s;
}
完整代码和运行结果如下:
输出符合示例,望采纳~
以上就是关于C语言 将一个二进制数,转换为对应的十进制数。全部的内容,包括:C语言 将一个二进制数,转换为对应的十进制数。、C语言 二进制转换成十进制、怎样写c语言将二进制转化成十进制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)