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 -


本文标签: 进制 前缀 转换 表示 基数