最近在深入学习计算机系统。很多的基础都忘记了。所以现在复习了一遍。
教材是《深入理解计算机系统》英文简写《CSAPP》
1、首先,无论是什么信息,在计算机中的表示都是0,和1组成的。那么这些0和1是怎么存储的呢?
当然,0和1只是一个表示符号,我们在实际中,可能用电位高低表示0和1,或者用时光盘的凸凹等等。
我们现在要说的,是抽象了一个层次的,就是这些无论如何表示0和1的信息,如何在计算机中存储的?
内存,你也许第一反应。对,信息是存储在内存中的,对于机器及程序来说,他把一个巨大的数组看做是一个虚拟存储器,而且,大多数的计算机都把这个虚拟存储器以8位来分一个块。每个块标识一个地址,这些地址组合起来形成虚拟地址空间。然后呢,我们的内存条,通过操作系统和她自身硬件的结合,来实现了我们对虚拟存储器的构想,使她看上去就是一个字节数组。
2、进制转换。由于我们熟悉的十进制在只有0和1的计算机世界里不能表示了,于是我们就用二进制吧。
例如: 十进制数 8 的二进制表示为 1000,十进制数 98的二进制表示为 1100010
这样的表示可能在我们看来很费解,但是计算机只能这么表示。而我们呢,需要定义一些法则来使得计算机能理解这些数字。
下面我们看一下二进制和十进制是如何转换的:
二进制到十进制
例如二进制 1100010
十进制到二进制转换
98 = 49* 2 + 0
49 = 24* 2 + 1
24 = 12* 2 + 0
12 = 6* 2 +0