跳至正文
View Categories

< 1 min read

主要内容 #

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

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

习题 #

课后练习