C++旧版课程库
C++第 3 期查看课程总览

075 原码

主要内容

本节课,主要讲解数据是如何存储在内存中的。

1. 原码

所谓“原码”其实就是指在内存中的实际电平状态(“有电 / 没电”) 所以,一个十进制数,就对应一个二进制数。 在 C++ 中,往往使用一个十六进制数来表示二进制数。想一想:你认为这是为什么呢?

输出原码

下面我们在代码中,来查看一下“真实的内存电平状态”,也就是“原码”。 示例程序:

#include < iostream >
#include < iomanip >
using namespace std;
int main()
{
    char dashima = 40;

    printf("%x\n", dashima);

    cout << setbase(16) << (int)dashima << endl;  // 【新语法】
    cout << setbase(16) << dashima << endl;       // 【新语法】dashima 是char类型,所以还是以字符形式输出
    cout << setbase(10) << 50 << endl;            // 【新语法】想要重新输出10进制数,需要再设置一次。

    return 0;
}
相比之下,十六进制输出使用 printf 是更加方便的。 请动手,将输出的十六进制数,转化成二进制数。

再谈加法

现在,我们知道了,平时我们常用的十进制数值,在内存中其实都是使用二进制来表示的。 那么,我们一起来实际模拟一下计算机计算加法的过程。

十进制数:
1  +  1  =  2
   ||
   ||
   \/
二进制数:
0001 + 0001 = 0002?

= 0010
再来看,

十进制数:
15  +  10  =  25
   ||
   ||
   \/
二进制数:
1111 + 1010 = 1 1001 = 0x19

习题

课后练习