主要内容 #
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。