admin 管理员组文章数量: 1184232
2024年12月23日发(作者:数怎么组词语一年级)
c++中进制转换
在C++中,将一个数从一个进制转换到另一个进制非常简单,
只需使用一些简单的函数和算法即可。
首先,我们需要知道C++中表示不同进制的前缀。例如,前缀
“0x”表示十六进制,“0”表示八进制,而没有前缀的数字默认为
十进制。
转换一个十进制数到另一个进制,我们可以使用以下算法:
1. 将十进制数除以目标进制的基数,将余数保存下来。
2. 将商除以目标进制的基数,将余数保存下来。
3. 重复上述步骤,直到商为0。
4. 将所有保存的余数倒序排列,得到转换后的数。
示例代码如下:
```c++
#include
#include
using namespace std;
string toBase(int num, int base) {
string result = '';
while (num > 0) {
int remainder = num % base;
num /= base;
result = to_string(remainder) + result;
- 1 -
}
return result;
}
int main() {
int num = 100;
cout << '十进制 ' << num << ' 转二进制: ' <<
toBase(num, 2) << endl;
cout << '十进制 ' << num << ' 转八进制: ' <<
toBase(num, 8) << endl;
cout << '十进制 ' << num << ' 转十六进制: ' <<
toBase(num, 16) << endl;
return 0;
}
```
上述代码输出为:
```
十进制 100 转二进制: 1100100
十进制 100 转八进制: 144
十进制 100 转十六进制: 64
```
同样,我们也可以将一个二进制、八进制或十六进制数转换为
十进制数。这可以通过将每位数字乘以对应进制的基数并求和来完
- 2 -
成。示例代码如下:
```c++
#include
#include
using namespace std;
int fromBase(string num, int base) {
int result = 0;
int power = 1;
for (int i = () - 1; i >= 0; i--) {
int digit = (isdigit(num[i])) ? (num[i] - '0') :
(num[i] - 'A' + 10);
result += digit * power;
power *= base;
}
return result;
}
int main() {
string num = '64';
cout << '十六进制 ' << num << ' 转十进制: ' <<
fromBase(num, 16) << endl;
num = '144';
cout << '八进制 ' << num << ' 转十进制: ' <<
- 3 -
fromBase(num, 8) << endl;
num = '1100100';
cout << '二进制 ' << num << ' 转十进制: ' <<
fromBase(num, 2) << endl;
return 0;
}
```
上述代码输出为:
```
十六进制 64 转十进制: 100
八进制 144 转十进制: 100
二进制 1100100 转十进制: 100
```
在注意C++中表示不同进制的前缀和转换算法的基础上,我们
可以轻松地进行进制转换。
- 4 -
版权声明:本文标题:c++中进制转换 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735011447a1622102.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论