首页 > 其他 > 详细

二进制整数转十进制 - 位运算的应用

时间:2015-11-20 21:47:50      阅读:643      评论:0      收藏:0      [点我收藏+]

校OJ的水题,但是可以创新一下用位运算来计算

但是要注意 C语言中的数字常数默认类型为int 位移过程中可能出现溢出

 

 

Description

给出一个二进制的非负整数x,x<232,把它转换成十进制数输出。

 

 

Input   输入为多行,每行一个二进制非负整数x。

Output  每行输出x对应的十进制数值。 

Sample Input

0 1 01 10 11 100001 1111111111111111

Sample Output

0 1 1 2 3 33 65535

HINT

 注意数据范围!!!

 

 

 1 #include "stdio.h"
 2 #include "string.h"
 3 const int maxn = 100000;
 4 int main(int argc, char const *argv[])
 5 {
 6     char indata[maxn];
 7         memset(indata,0,sizeof(indata));
 8     while(scanf("%s",indata)!=EOF)
 9     {
10         int n = strlen(indata);
11         unsigned long long sum = 0;
12         for(int i=n-1;i>=0;i--)
13         {
14             unsigned long long k = indata[i]-0;
15             sum += (k<<(n-i-1));
16         }
17         printf("%llu\n",sum );
18     }
19     return 0;
20 }

 

二进制整数转十进制 - 位运算的应用

原文:http://www.cnblogs.com/pepper/p/4982269.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!