目录
1. 二进制数、八进制数、十六进制数转换为十进制数
十进制数的每一位都是10的指数幂。如,
将这个思路应用于二进制数、八进制数、十六进制数,就能将这些数转换为十进制数。
二进制数101转换为十进制数:
八进制数123转换为十进制数:
十六进制数1FD转换为十进制数:
2. 十进制数转换为二进制数、八进制数、十六进制数
将这个思路应用于二进制数、八进制数、十六进制数,就能将十进制数转换为二进制数、八进制数、十六进制数。
十进制数57转换为二进制数:
111001
十进制数57转换为八进制数:
71
十进制数57转换为十六进制数:
39
给定一个十进制数M(32位整数),以及需要转换的进制数N(2 ≤ N ≤ 16)。将十进制数M转化为N进制数:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int m, n;
cin >> m >> n;
if (m == 0)
{
cout << 0 << endl;
}
string ans;
string hash = "0123456789ABCDEF"; // 表示映射关系
bool positive = true;
if (m < 0)
{
m = -m; // 如果m是负数,取相反数,变成正数
positive = false;
}
while (m != 0)
{
ans += hash[m % n]; // 将余数拼接到字符串
m /= n;
}
if (positive = false)
{
ans += "-"; // 如果m本来是负数,加上负号
}
reverse(ans.begin(), ans.end()); // 倒置字符串
cout << ans << endl;
return 0;
}
3. 二进制数和十六进制数的相互转换
4位二进制数和1位十六进制数是相互对应的(即4位的二进制数0000 ~ 1111,就是1位的十六进制数0 ~ F)。
二进制数 | 十六进制数 |
---|---|
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
二进制数0111101010011100转换为十六进制数:
0111 1010 1001 1100
7 A 9 C
十六进制数8AF7转换为二进制数:
8 A F 7
1000 1010 1111 0111
4. 使用电脑计算器进行进制转换
将计算器切换为程序员选项:
将十进制数16转换为二进制数、八进制数、十六进制数: