跳至正文
View Categories

< 1 min read

主要内容 #

1. bool 变量 #

在之前的课程中,我们学习了 bool 变量。
我们说过,bool 变量的取值范围,是 0 或者 1。(也就是 false 和 true)

现在,大家看,这不就是一个“二进制”吗?

2. 为什么计算机选择了二进制? #

其实,这和我们之前讲到的内存,息息相关。

大家还记得吗,内存有一个很重要的特点,就是

  • 断电之后,数据就丢失了。
  • 为什么呢?

    这其实啊,这是因为,在内存中,有很多的内存小单元。每个小单元,可以存储一定的电荷。
    内存里面的样子,就如下图所示:

    我们程序中用到的所有数据,无论是电影、音乐、文件,甚至是我们现在看到的画面,
    其实,都是以内存中的某些小单元的“有电/没电”状态,来存储的。

    这样,断电以后,所有的小单元都变成了“没电”状态,那当然数据就丢失了。

  • 我们的“数据/信息”,在电脑中,其实就是小单元们的“有电/没电”状态
  • “有电/没电”状态,需要电源供电,才可以保持
  • 或许大家有疑问,为什么我们存放在电脑上的文件,不会因为关机,而丢失呢?

    我们的存在电脑的文件,之所以不丢失,是因为它们是存放在硬盘上的。
    硬盘的存储技术和内存不同,硬盘在断电后,可以保留数据。

  • 内存的这种存储技术,比硬盘读写速度快;这样程序才不会卡
  • 所以,一般将硬盘用于存储数据内存用于运行程序

    3. 内存的模型 #

    学习 C++ 的过程中,需要一直和内存打交道。所以为了讨论方便,我们一般将内存画作下面的样子。“有电/没电”状态,用“1/0”表示。

    假如,将上图的“有电/没电”状态,写成二进制数的话,请问要怎么写?(请从左边开始,写 8 位即可)

    1011 0010

    请将其转化成 16 进制数,10 进制数。

    0xB2
    178(10进制)

    我们可以做一个合理的假设,假如我们运行了下面的代码:

    int dashima;
    dashima = 178;

    那么,这就是变量 dashima,赋值为 178 后,在内存中的样子。
    (当然,这个说法其实不够准确。因为 int 是“很长”的。)

    4. 一个 int #

    下图中,两端灰色中间的部分,是一个 int 的长度。所以,这才是上面的例程中的变量 dashima 的在内存中的样子。

    请数一数,一个 int 变量的长度,是一个 “bool” 变量的几倍?

    答案是 32。

    习题 #

    课后练习