当前位置:   article > 正文

二进制与十进制的转换【相互转换, C++】_二进制转十进制c++代码

二进制转十进制c++代码

二进制转十进制:

  1. 以字符串的形式读入二进制串。
  2. 获得该字符串的位数,即二进制的最高位是多少。
  3. 从左往右遍历 == 从高位往低位展开!
  4. 核心:按权展开,按位相加。

代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;
string str;

int main()
{
    getline(cin, str);
    int n = str.size();
    int sum=0;
    for (int i=0; i < n; i ++)
    {
        int nums = str[i] - '0';    //字符数字转化为int类型的数字
        sum = sum + nums * pow(2, n-i-1);
    }
    cout << sum << endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

十进制转换为二进制:

思路:

  1. 十进制转化为 x x x 进制采用的是除 x x x 取余法(从下往上取余数)。
  2. 所以说我们需要不断模拟的是辗转相除法,然后对于余数进行存储,记住余数是不能相加求和的。要存储下来!

代码:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 1e2 + 10;
int a[N];   //存储余数的!

int main()
{
    int x;
    cin >> x;
    int idx=0;
    while (x)
    {
        a[idx ++] = x % 2;
        x/=2;   //除以所要转化的进制的基数。
    }
    reverse(a, a+idx);
    for (int i=0; i < idx; i ++)
        cout << a[i];   
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/69540
推荐阅读
相关标签
  

闽ICP备14008679号