7.8进制和16进制
7.1 知识点
8进制和10进制的转换
8进制和10进制之间的转换是一项常见的计算任务。8进制采用 8 个不同的符号(0-7),而 10进制则使用 10 个符号(0-9)。可以通过以下方法进行转换:
- 8进制转10进制:将 8进制数的每一位乘以对应的 8 的幂次方,最后相加即可得到对应的 10进制数。
- 10进制转8进制:将 10进制数除以 8,直到商为零,记录每次除法的余数,余数的倒序就是对应的 8进制数。
16进制和10进制的转换
16进制与10进制的转换也十分常见。16进制采用 16 个符号(0-9 和 A-F),而 10进制使用 10 个符号(0-9)。转换方式如下:
- 16进制转10进制:将 16进制数的每一位乘以对应的 16 的幂次方,最后相加得到 10进制数。
- 10进制转16进制:将 10进制数除以 16,直到商为零,记录每次除法的余数,余数的倒序就是对应的 16进制数。
不同进制数的作用和声明
10进制:
- 10进制的作用:在日常开发中,如果没有特殊需求,通常使用 10进制来表示数值。
- 10进制的声明:默认情况下,数值赋值为 10进制。例如:
int i = 44; cout << i << endl; // 输出 44
2进制:
- 2进制的作用:数据的本质是二进制,它是计算机系统的根本。虽然我们通常不直接操作二进制,但它在底层的运作中无时无刻不在。
- 2进制的声明:在 C++11 标准及之后,2进制数值以
0b
或0B
开头。例如:int i2 = 0B101; cout << i2 << endl; // 输出 5
8进制:
- 8进制的作用:8进制在日常开发中使用较少,了解其基本概念即可。它有时用于计算机底层操作的简化表示。
- 8进制的声明:8进制数值以
0
开头。例如:int i8 = 077; cout << i8 << endl; // 输出 63
16进制:
- 16进制的作用:
- 用于表示内存地址。
- 用于表示颜色(例如 RGB 值)。
- 在文件格式和网络通讯中,常用 16进制表示一些信息。
- 汇编语言中常用 16进制表示操作码和地址。
- 16进制的声明:16进制数值以
0x
开头。例如:int i16 = 0x3C7; cout << i16 << endl; // 输出 967
7.2 知识点代码
Lesson07_8进制和16进制.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "8进制和16进制\n";
#pragma region 知识点一 8进制和10进制的转换
#pragma endregion
#pragma region 知识点二 16进制和10进制的转换
#pragma endregion
#pragma region 知识点三 不同进制数的声明和作用
//10进制
//10进制的作用
// 在日常开发时,没有特殊需求时我们都使用10进制来表示数值
//10进制的声明
// 默认数值赋值都是10进制数
int i = 44;
cout << i << endl;//44
//2进制
//2进制的作用
// 数据的本质都是2进制,它是一切的根本
// 虽然我们只有在处理一些需求时才会显示的使用2进制
// 但是它无时无刻不伴随着我们
//2进制的声明
// 2进制数值以0b/0B开头
int i2 = 0B101;
cout << i2 << endl;//5
//8进制
//8进制的作用
// 8进制在我们的日常开发中使用较少,主要做了解即可
//8进制的声明
// 8进制数值以0开头
int i8 = 077;
cout << i8 << endl;//63
//16进制
//16进制的作用
// 2-1.用来表示内存地址的位置
// 2-2.用来表示颜色
// 2-3.文件格式和网络通讯时会使用16进制表示一些信息
// 2-4.汇编语言中常使用16进制表示操作码和地址
//16进制的声明
// 16进制数值以0x开头
int i16 = 0x3C7;
cout << i16 << endl;//967
#pragma endregion
}
7.3 练习题
如何在C++中显示的声明2进制、8进制、16进制的数值
int i2 = 0B111;
cout << i2 << endl; // 7
int i8 = 0777;
cout << i8 << endl; // 511
int i16 = 0xAAA;
cout << i16 << endl; // 2730
请将156转为8进制,写出计算过程
将156转换为8进制:
- 用156除以8,商19,余数4
- 用19除以8,商2,余数3
- 用2除以8,商0,余数2
所以,156的8进制表示是0234。
请将156转为16进制,写出计算过程
将156转换为16进制:
- 用156除以16,商9,余数12(12在16进制中表示为C)
- 用9除以16,商0,余数9
所以,156的16进制表示是0x9C。
请将8进制345转为10进制,写出计算过程
0345 = 5 * 1 + 4 * 8 + 3 * 64 = 5 + 32 + 192 = 229
请将16进制345转为10进制,写出计算过程
0x345 = 5 * 1 + 4 * 16 + 3 * 256 = 5 + 64 + 768 = 837
7.4 练习题代码
Lesson07_练习题.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "8进制和16进制练习题\n";
#pragma region 练习题一
//如何在C++中显示的声明2进制、8进制、16进制的数值
int i2 = 0B111;
cout << i2 << endl;//7
int i8 = 0777;
cout << i8 << endl;//511
int i16 = 0xAAA;
cout << i16 << endl;//2730
#pragma endregion
#pragma region 练习题二
//请将156转为8进制,写出计算过程
//156 = 0234
#pragma endregion
#pragma region 练习题三
//请将156转为16进制,写出计算过程
//156 = 0x9C
#pragma endregion
#pragma region 练习题四
//请将8进制345转为10进制,写出计算过程
// 0345 = 5 * 1 + 4 * 8 + 3 * 64 = 5 + 32 + 192 = 229
#pragma endregion
#pragma region 练习题五
//请将16进制345转为10进制,写出计算过程
// 0x345 = 5 * 1 + 4 * 16 + 3 * 256 = 5 + 64 + 768 = 837
#pragma endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com