将二进制转成十进制,按权值展开求和即可。
可以通过以下代码解决:
#include <stdioh>
#include <stdlibh>
int main()
{
char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len<=16)
{
for(i=0;i<len;i++)
{
m=1;
if(a[i]=='1')
{
for(j=1;j<=len-i-1;j++)
m=2;
sum+=m;
}
}
printf("%d",sum);
}
return 0;
}
扩展资料:
我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。
十进制转二进制:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
八进制转二进制:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
十六进制转二进制:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
负数的进制转换稍微有些不同。
先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。
例:要求把-9转换为八进制形式。则有:
-9的补码为1111 1111 1111 0111。从后往前三位一划,不足三位的加0
111---->7
110---->6
111---->7
111---->7
111---->7
001---->1
然后我们将结果按从下往上的顺序书写就是:177767,那么177767就是十进制数-9的八进制形式。
其实转化成任意进制都是一样的。
参考资料:
二进制——百度百科
十进制——百度百科
1到15的十进制、二进制、十六进制的值分别为:
1的十进制、二进制、十六进制分别为:1、0001、1。
2的十进制、二进制、十六进制分别为:2、0010、2。
3的十进制、二进制、十六进制分别为:3、0011、3。
4的十进制、二进制、十六进制分别为:4、0100、4。
5的十进制、二进制、十六进制分别为:5、0101、5。
6的十进制、二进制、十六进制分别为:6、0110、6。
7的十进制、二进制、十六进制分别为:7、0111、7。
8的十进制、二进制、十六进制分别为:8、1000、8。
9的十进制、二进制、十六进制分别为:9、1001、9。
10的十进制、二进制、十六进制分别为:10、1010、A。
11的十进制、二进制、十六进制分别为:11、1011、B。
12的十进制、二进制、十六进制分别为:12、1100、C。
13的十进制、二进制、十六进制分别为:13、1101、D。
14的十进制、二进制、十六进制分别为:14、1110、E。
15的十进制、二进制、十六进制分别为:15、1111、F。
参考资料来源:百度百科-十进制
参考资料来源:百度百科-十六进制
参考资料来源:百度百科-二进制
二进制101001=1×2^5+1×2^3+1×2^0=32+8+1=41八进制52=5×8^1+2×8^0=40+2=42十六进制2B=2×16^1+B×16^0=32+11=43十进制44101001B<52O<2BH<44D二进制数、转换为十进制数的规律是:把二进制数按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”你这个例子太长了,举个简单点的例子
例如:把(100101)2转换为十进制数。
解:(100101)2
=1×(2的3次方)+0×(2的2次方)+0×(2的1次方)+1×(2的0次方)+0×(2的-1次方)+1×(2的-2次方)
=8+0+0+1+05+025
=975
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)