c++中二进制转十进制
时间: 2023-11-30 07:04:04 浏览: 96
在C++中将二进制转换为十进制可以通过以下代码实现:
```
#include <iostream>
#include <math.h>
using namespace std;
int main() {
unsigned long n, num = 0;
int i = 0;
cout << "Enter any Binary number:";
cin >> n;
while (n != 0) {
int d = n % 10;
num += d * pow(2, i);
n /= 10;
i++;
}
cout << "\nThe Decimal conversion of " << n << " is " << num;
return 0;
}
```
这个程序将输入的二进制数转换为十进制数,并输出结果。具体实现方法是将二进制数从右往左依次取出每一位,乘以2的幂次方,再将结果相加即可得到十进制数。
相关问题
c++二进制转化为十进制代码
以下是C++中二进制转化为十进制的代码:
```
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main() {
string n; // 定义字符串n
int sum = 0; // 定义转化为十进制的数字为sum
cout << "请输入二进制数字:";
cin >> n; for(int i = 0; i < n.size(); i++) {
// 边界条件判断
if(n[i] > '1') {
cout << "非法输入";
return 0; // 直接退出
}
// 判断当前字符串n[i]是否为1,因为不是1就是0,为0的话,0的2次方还是等于0,不需要加法运算。
if(n[i] == '1') {
int j = pow(2, n.size() - i - 1); // 这里考虑好二进制转化成十进制公式里面i和次方的关系
sum += j;
}
}
cout << sum << endl;
return 0;
}
```
该代码使用了字符串来存储二进制数字,然后通过循环遍历字符串中的每一位,判断是否为1,如果是1,则根据公式计算出对应的十进制数并加到sum中。最后输出sum即可。
C++ 操作二进制的函数
在 C++ 中,可以使用以下函数来操作二进制数据:
1. `bitset<N>`:一个固定大小的二进制位集合,可以进行位操作,比如设置、获取、翻转、移位等操作。
2. `bit_reference`:`bitset<N>` 中的位引用类型,可以像引用普通变量一样进行赋值、取地址等操作。
3. `bitset<N>::to_ulong()`:将 `bitset<N>` 转换为 `unsigned long` 类型。
4. `bitset<N>::to_ullong()`:将 `bitset<N>` 转换为 `unsigned long long` 类型。
5. `bitset<N>::operator[]()`:获取 `bitset<N>` 中指定位置的二进制位的值。
6. `bitset<N>::count()`:返回 `bitset<N>` 中值为 1 的二进制位的数量。
7. `bitset<N>::size()`:返回 `bitset<N>` 中二进制位的数量。
8. `bitset<N>::reset()`:将 `bitset<N>` 中所有二进制位重置为 0。
9. `bitset<N>::reset(pos)`:将 `bitset<N>` 中指定位置的二进制位重置为 0。
10. `bitset<N>::set()`:将 `bitset<N>` 中所有二进制位设置为 1。
11. `bitset<N>::set(pos)`:将 `bitset<N>` 中指定位置的二进制位设置为 1。
12. `bitset<N>::flip()`:将 `bitset<N>` 中所有二进制位取反。
13. `bitset<N>::flip(pos)`:将 `bitset<N>` 中指定位置的二进制位取反。
以下是一个使用 `bitset` 类的示例代码:
```c++
#include <iostream>
#include <bitset>
int main() {
std::bitset<8> bits("10101010"); // 二进制数 10101010,对应十进制数 170
std::cout << bits << std::endl; // 输出 10101010
bits.set(2); // 将第 3 个二进制位设置为 1
std::cout << bits << std::endl; // 输出 10101110
bits.reset(4); // 将第 5 个二进制位重置为 0
std::cout << bits << std::endl; // 输出 10100110
bits.flip(); // 将所有二进制位取反
std::cout << bits << std::endl; // 输出 01011001
std::cout << bits.count() << std::endl; // 输出 4,即值为 1 的二进制位数量
return 0;
}
```
阅读全文