用C/C++语言For循环实现二进制数11001001转上十制数的算法
时间: 2024-09-19 09:16:35 浏览: 82
在C/C++中,你可以使用for循环和位运算来将二进制数转换为十进制数。二进制每位对应的权值是2的幂次,从右向左,依次为2^0、2^1、2^2...。以下是一个简单的示例:
```c++
#include <iostream>
int binaryToDecimal(int binary) {
int decimal = 0;
for (int i = 0; i < sizeof(binary) * 8; i++) { // 注意这里是sizeof(binary) * 8,因为二进制数是32位
if ((binary & (1 << i)) != 0) { // 检查当前位是否为1
decimal += pow(2, sizeof(binary) - i - 1); // 如果为1,则加上对应位的权重
}
}
return decimal;
}
int main() {
int binary = 0b11001001; // 十六进制前缀 '0b' 表示这是一个二进制数
int decimalResult = binaryToDecimal(binary);
std::cout << "二进制数 " << binary << " 转换成十进制是 " << decimalResult << std::endl;
return 0;
}
```
在这个例子中,我们通过位与操作 `binary & (1 << i)` 来检查二进制数的第i位,如果结果不为0,就说明该位为1,然后加上2的相应幂次作为十进制的贡献。
阅读全文