给定一个正的二进制数,将其转换为十进制数输出。 例如二进制数:110100101,转成十进制数是:421 例如二进制数:110110110,转成十进制数是:438 格式 输入格式 一个正的二进制数,其长度不超过31位 输出格式 对应的十进制正整数
时间: 2024-05-31 17:07:25 浏览: 330
算法1:
将二进制数从右往左遍历,对于每一位,如果是1,则加上2的当前位数次幂,最后得到的结果就是十进制数。
时间复杂度:O(n)
C++ 代码
class Solution {
public:
int binToDec(string bin) {
int len = bin.size();
int res = 0;
for (int i = 0; i < len; i++) {
if (bin[i] == '1') {
res += pow(2, len - i - 1);
}
}
return res;
}
};
算法2:
使用位运算,从左往右遍历二进制数的每一位,将每一位的值左移对应的位数次幂,然后与当前结果相加。
时间复杂度:O(n)
C++ 代码
class Solution {
public:
int binToDec(string bin) {
int len = bin.size();
int res = 0;
for (int i = 0; i < len; i++) {
int bit = bin[i] - '0';
res = (res << 1) + bit;
}
return res;
}
};
相关问题
写一个C代码 给定一个正的二进制数,将其转换为十进制数输出。 例如二进制数:110100101,转成十进制数是:421 例如二进制数:110110110,转成十进制数是:438
```c
#include <stdio.h>
int main()
{
int binary, decimal = 0, base = 1;
printf("请输入一个正的二进制数:");
scanf("%d", &binary);
while(binary > 0)
{
int rem = binary % 10;
decimal += rem * base;
base *= 2;
binary /= 10;
}
printf("转换成十进制数为:%d", decimal);
return 0;
}
```
注意:本代码仅适用于正的二进制数,对于负数的处理需要使用补码等方式。
用python3编程:给定一个正的二进制数,将其转换为十进制数输出。
好的,这个问题我可以回答。可以使用int()函数将二进制数转换为十进制数,代码如下:
```
binary_num = input("请输入一个正的二进制数:")
decimal_num = int(binary_num, 2)
print("转换后的十进制数为:", decimal_num)
```
其中,input()函数用于获取用户输入的二进制数,int()函数的第二个参数指定了输入的数是二进制数。
阅读全文