Appearance
L3_02 进制转换
一、二进制
1.1 定义
二进制是使用 0 和 1 表示数字的计数系统。
1.2 特点
- 基数为 2
- 每一位的权值为 2^n
1.3 示例
二进制:1010
十进制:1×2³ + 0×2² + 1×2¹ + 0×2⁰ = 8 + 0 + 2 + 0 = 10二、八进制
2.1 定义
八进制是使用 0-7 表示数字的计数系统。
2.2 特点
- 基数为 8
- 每一位的权值为 8^n
- 三位二进制对应一位八进制
2.3 示例
八进制:12
十进制:1×8¹ + 2×8⁰ = 8 + 2 = 10三、十进制
3.1 定义
十进制是使用 0-9 表示数字的计数系统。
3.2 特点
- 基数为 10
- 每一位的权值为 10^n
3.3 示例
十进制:123
值:1×10² + 2×10¹ + 3×10⁰ = 100 + 20 + 3 = 123四、十六进制
4.1 定义
十六进制是使用 0-9 和 A-F 表示数字的计数系统。
4.2 特点
- 基数为 16
- 每一位的权值为 16^n
- 四位二进制对应一位十六进制
4.3 示例
十六进制:A
十进制:10
十六进制:FF
十进制:15×16¹ + 15×16⁰ = 240 + 15 = 255五、进制转换方法
5.1 十进制转其他进制
5.1.1 十进制转二进制
cpp
#include <iostream>
using namespace std;
void decimalToBinary(int num) {
int binary[32];
int i = 0;
while (num > 0) {
binary[i] = num % 2;
num /= 2;
i++;
}
for (int j = i-1; j >= 0; j--) {
cout << binary[j];
}
}
int main() {
decimalToBinary(10); // 输出:1010
return 0;
}5.1.2 十进制转十六进制
cpp
#include <iostream>
using namespace std;
void decimalToHex(int num) {
char hex[16] = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
int remainder;
if (num == 0) {
cout << "0";
return;
}
while (num > 0) {
remainder = num % 16;
cout << hex[remainder];
num /= 16;
}
}
int main() {
decimalToHex(255); // 输出:FF
return 0;
}5.2 其他进制转十进制
5.2.1 二进制转十进制
cpp
#include <iostream>
#include <string>
using namespace std;
int binaryToDecimal(string binary) {
int decimal = 0;
for (char c : binary) {
decimal = decimal * 2 + (c - '0');
}
return decimal;
}
int main() {
cout << binaryToDecimal("1010") << endl; // 输出:10
return 0;
}5.2.2 十六进制转十进制
cpp
#include <iostream>
#include <string>
using namespace std;
int hexToDecimal(string hex) {
int decimal = 0;
for (char c : hex) {
decimal *= 16;
if (c >= '0' && c <= '9') {
decimal += (c - '0');
} else if (c >= 'A' && c <= 'F') {
decimal += (c - 'A' + 10);
} else if (c >= 'a' && c <= 'f') {
decimal += (c - 'a' + 10);
}
}
return decimal;
}
int main() {
cout << hexToDecimal("FF") << endl; // 输出:255
return 0;
}5.3 二进制与八进制、十六进制互转
5.3.1 二进制转八进制
二进制:101011
分组:010 101 1(前面补0)
八进制:2 5 3 = 2535.3.2 二进制转十六进制
二进制:11010110
分组:1101 0110
十六进制:D 6 = D6六、示例程序:进制转换器
cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int choice;
cout << "1. 十进制转二进制" << endl;
cout << "2. 十进制转十六进制" << endl;
cout << "3. 二进制转十进制" << endl;
cout << "4. 十六进制转十进制" << endl;
cout << "请选择转换类型: ";
cin >> choice;
switch (choice) {
case 1: {
int num;
cout << "输入十进制数: ";
cin >> num;
// 实现转换...
break;
}
case 2: {
int num;
cout << "输入十进制数: ";
cin >> num;
// 实现转换...
break;
}
case 3: {
string binary;
cout << "输入二进制数: ";
cin >> binary;
// 实现转换...
break;
}
case 4: {
string hex;
cout << "输入十六进制数: ";
cin >> hex;
// 实现转换...
break;
}
default:
cout << "无效选择" << endl;
}
return 0;
}