二进制数转十进制数的算法
发布网友
发布时间:2022-04-20 04:02
我来回答
共4个回答
热心网友
时间:2023-06-30 20:45
using System;
using System.Collections.Generic;
using System.Text;
namespace test1
{
class Program
{
static void Main(string[] args)
{
string st; //二进制数,我用字符串形式
int n=0; //十进制数
int len; //字符串的长度
st = Console.ReadLine();
len = st.Length;
foreach (char c in st)
{
if (c == '1')
n += (int)System.Math.Pow((double)2, len-1);
len--;
}
Console.WriteLine(n);
Console.ReadKey();
}
}
}
热心网友
时间:2023-06-30 20:46
输入你可以用字符串,输出用整形。从倒数第2位开始算(十位),模仿十进制的展开。再把最后一位加上去就好了。代码如下。
#include<stdio.h>
#include<string.h>
int main()
{
char s[30];
int n=0,len,i;
scanf("%s",s);
len=strlen(s);
for(i=len-2;i>=0;i--)
{
n+=s[i]-'0';
n*=2;
}
n+=s[len-1]-'0';
printf("%d\n",n);
return 0;
}
热心网友
时间:2023-06-30 20:46
你可以这样看
十进制例子
1 1 1 1(原始值)
3 2 1 0(次方数)
10 10 10 10(进制值)
1000 100 10 1(每一位得出值=进制值的次方数x原始值)
得出=1111 每一位得出值相加
二进制例子
1 1 1 1(原始值)
3 2 1 0(次方数)
2 2 2 2(进制值)
8 4 2 1(每一位得出值=进制值的次方数x原始值)
得出=15 每一位得出值相加
以上也可以这样看(举16进制例子)
A2B23=10 X 65536(16的4次方) + 2 X 4096(16的3次方) + 11 X 256(16的2次方) + 2 X 16(16的一次方) + 3X 1(16的0次方,任何数的0次方是1)
8进制同理。
热心网友
时间:2023-06-30 20:47
2进制数 1 0 1 0 1
第4位 第3位 第2位 第1位 第0位
十进制数为 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0
8进制数 1 0 1 0 1
第4位 第3位 第2位 第1位 第0位
十进制数为 1*8^4+0*8^3+1*8^2+0*8^1+1*8^0