|
在继续内存的话题之前,我们不得不说到C++的各种类型的变量,说到变量就得了解各种类型变量在内存中所占的空间大小,而内存中或者其他存储设备存贮数据的方式都是以二进制来存储,所以最终我们还必须得先了解下计算机中的二进制到底是怎么回事。
我们每个人都知道十进制,就是在数数的时候,逢十进一,在做减法的时候借一当十。小学生都会。但为什么我们对十进制这么了解,为什么不是九进制,不是十一进制,或许我们的祖先看到自己有十个手指头的原因吧。。。
那么二进制可以按照同理推算,逢二进一,借一当二。
十进制的0 对应二进制的0 十进制的1 对应二进制的1 十进制的2 对应二进制的10(逢二向高一位进1) 十进制的3 对应二进制的11 十进制的4 对应二进制的100(又进一位)
。。。5-1016-1107-1118-10009-100110-101011-101112-110013-110114-111015-1111。。。
第一次接触二进制的朋友看到上面的一一对应第一反应就是,算起来有点使不上劲的感觉,写起来还麻烦,看起来不顺眼,为什么计算机的存储和计算会用这么麻烦的方式??原因是计算机用起来很顺手,为什么,通俗的讲下计算机没有像人类一样的大脑细胞组织,有的是一个个的小电子零件,每个零件可以通电或者放电,效果就像开关一开一关。开代表着1,关代表着0。而恰好这种开关成本很低,体积又小的看不到,稳定性又极好,那么可以为一个计算机配置超大数量的小开关,排列在那里,等待着我们把它们设置成一堆01001001101010100101。。。。。。
这样的方式,计算机就可以为我们存数比如整数8这样的数字,在硬盘中就是把某片连续的四个小开关分别置为1000。
当然存储几个数字还不够过瘾,我们存数一个游戏模型又是什么样的方式呢? 快速的介绍下:模型呈现在我们眼前是由一堆可见的面片堆到一起的物体。但是边再多的多边形面片都是由三角形组成,三角形由三条线组成,每条线由两个点组成,每个点都是float浮点型数值,每个float类型的数都是由32位组成,看以看做是32个小开关在构成一个float数值。 举个例子,模型的某个点的三维坐标是16,0,10,那么有三组小开关,每组32个,他们的闭合状态如下:
16: 00000000 00000000 00000000 000100000: 00000000 00000000 00000000 0000000010: 00000000 00000000 00000000 00001010
你也许会怀疑一个模型这么多点,开关够用吧,答案是绝对够用,多的你都无法想象。很神奇。 那么最后就让我们不严格的来算一下你的硬盘有多少个小开关。 如果你的硬盘是1TB,那么:
1TB = 1024GB = 1024*1024MB = 1024*1024*1024KB=1024*1024*1024*1024 Byte (字节)=1024*1024*1024*1024*8 Bit(一个比特就是一个开关)=2的10次方 * 2的10次方 * 2的10次方 * 2的10次方 * 2的3次方=2的43次方=8796093022208
我们查看硬盘空间通常是只精确到字节单位,所以上述结果除以8,就是字节的单位。
这一节我们并没有涉及太多的二进制计算,只是在数数,目的就是了解我们的计算机大致是如何存数数据的。下一次我们继续深入。
微信订阅号搜索“风之神韵”,关注随时获取更多教学信息。
http://i.youku.com/u/UMTE5MzA2NDA0 |
|