📜  将二进制转换为十进制 c++ stl - C++ (1)

📅  最后修改于: 2023-12-03 15:09:34.052000             🧑  作者: Mango

将二进制转换为十进制 C++ STL

在计算机科学中,二进制是一种基于2的数字系统,其中每个数字位上只能是0或1。而十进制是我们通常使用的基于10的数字系统。因此,在许多编程任务中,需要将二进制转换为十进制。本文介绍如何使用C++ STL库实现二进制到十进制的转换。

使用bitset函数

C++ STL库中的bitset函数可以将二进制字符串转换为十进制数。下面是一个使用bitset函数将二进制字符串转换为十进制数的代码示例:

#include <bitset>
#include <iostream>
#include <string>

int main() {
  std::string binaryString = "1010111";
  std::bitset<8> binary(binaryString);
  std::cout << binary.to_ulong() << std::endl;
  return 0;
}

这个示例中,我们首先将一个二进制字符串“1010111”赋值给一个std::string。接下来,我们将这个字符串转换为一个std::bitset对象,并将所有位映射到8位(因为我们要将二进制字符串转换为一个8位十进制数)。最后,使用std::bitset的to_ulong函数将std::bitset对象转换为一个unsigned long int类型的十进制数。

使用移位运算和幂函数

除了使用bitset函数外,我们还可以使用移位运算符和幂函数将二进制数转换为十进制数。下面是一个示例代码:

#include <iostream>
#include <cmath>

int binaryToDecimal(long long binary) {
  int decimal = 0, i = 0, rem;
  while (binary != 0) {
    rem = binary % 10;
    binary /= 10;
    decimal += rem * pow(2, i);
    ++i;
  }
  return decimal;
}

int main() {
  long long binary = 1010111;
  std::cout << binaryToDecimal(binary) << std::endl;
  return 0;
}

在这个示例中,我们首先定义了一个函数binaryToDecimal,它接受一个long long类型的二进制数,并将其转换为十进制数。然后,我们在main函数中调用这个函数,并将二进制数1010111作为参数传递。

函数binaryToDecimal中,我们将传入的二进制数从右到左依次进行移位运算,每次将所得结果与2的幂相乘,并将它们相加,得到一个十进制数。最终,我们将这个十进制数返回给调用方。

总结

在本文中,我们介绍了两种不同的方法将二进制数转换为十进制数:使用bitset函数和使用移位运算和幂函数。这些方法都可以使用C++ STL库轻松实现。当选择一个方法时,需要考虑其适用性、效率和易读性等方面的因素。