C语言 将一个二进制数,转换为对应的十进制数。

C语言 将一个二进制数,转换为对应的十进制数。,第1张

#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语言将二进制转化成十进制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9359097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存