7.8进制和16进制

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进制数值以 0b0B 开头。例如:
    int i2 = 0B101;
    cout << i2 << endl;  // 输出 5
    

8进制:

  • 8进制的作用:8进制在日常开发中使用较少,了解其基本概念即可。它有时用于计算机底层操作的简化表示。
  • 8进制的声明:8进制数值以 0 开头。例如:
    int i8 = 077;
    cout << i8 << endl;  // 输出 63
    

16进制:

  • 16进制的作用
    1. 用于表示内存地址。
    2. 用于表示颜色(例如 RGB 值)。
    3. 在文件格式和网络通讯中,常用 16进制表示一些信息。
    4. 汇编语言中常用 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进制:

  1. 用156除以8,商19,余数4
  2. 用19除以8,商2,余数3
  3. 用2除以8,商0,余数2

所以,156的8进制表示是0234。

请将156转为16进制,写出计算过程

将156转换为16进制:

  1. 用156除以16,商9,余数12(12在16进制中表示为C)
  2. 用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

×

喜欢就点赞,疼爱就打赏