Xavier's Blog

32位?64位?

| Comments

前两天室友买了台Dell Inspiron 14R,装机的时候向我要Win7 64位的安装盘,我略感惊讶,原来笔记本也普及64位了,我还停留在Windows XP的3.2G的“美好”回忆里。借此机会,正好看看平常所说的“32位”“64位”到底有什么不同。

到底是哪个地方的“位”?

本质上,讲的就是一个地方的“位”——CPU,也就是CPU进行一次运算支持的数据位数,或者是CPU一条基本指令的位数。

CPU的位数决定了运算的范围或者说是精确程度,也决定了计算机内存的寻址范围。

说到数字的精度,下面是IEEE754的标准中,32位浮点数(float)和64位浮点数(double)在内存中分别是如下形式:

image

IEEE 754 Double Floating Point Format.svg

其中,

float的计算方式为image,数值范围为1.18 × 10−38 ~ 3.4 × 1038 。

double的计算方式为image,数值范围为2.2250738585072014 x 10−308 ~ 1.7976931348623157 x 10308

大家也可以看一下斯坦福大学的公开课《范式编程》,前2节课讲的就是各种基础类型是如何在内存中存储的。

至于寻址范围,理论上32位的寻址范围是232,64位的就是264。但实际用户能用到的并没有那么多,32位机器也就3.4G左右可供用户使用,而64位机器一般是支持100~200G左右的内存,64位Windows 7专业版支持最大192G。

CPU –> OS –> Application

Processor, OS and application hierarchy

CPU、OS和Application,是一个前者决定后者的关系。是否可以运行64位的应用程序,得看OS是不是64位的;能不能安装64位的OS,得看CPU(以前主板等硬件)是否是支持64位的。下表可以清晰的各种情况的CPU、OS和Application是否兼容的情况:

image

—EOF—

http://www.techsupportalert.com/content/32-bit-and-64-bit-explained.htm

http://en.wikipedia.org/wiki/IEEE_floating_point

http://v.163.com/special/opencourse/paradigms.html

Comments