值的表示

目前大多数计算机是32位的,这说明最多能处理长度为 32位的整型值。

整数占用的内存

32位的整型取值范围为 -2147483648 至 2147483648。

如果定义一个变量为整型,Dim intNo as Integer,就表示要存储一个整型值。为此,计算机分配了一个 32 位的内存块。

内存为 256MB 的计算机最多能存储 67108864 个整型数。听起来很多,但是内存是共享的,其他程序也需要内存。因此你在编写软件时要节约使用内存。

如果定义一个整数,无论存储的是 125,还是229658,都要使用 32 位内存。整数的大小和存储它的空间无关。这似乎造成了浪费,但是计算机对于相同类型的数值采用相同的存储空间。如果不这样,它就无法工作。

单精度浮点数和双精度浮点数占用的内存

一个单精度浮点数只需32位内存,与整型值相同。

一个双精度浮点数占用的内存则是单精度浮点数的一倍,需要64位内存。

字符串占用的内存

与整型和浮点数不同,字符串没有固定的长度。字符串的每一个字符都占据2个字节 (byte),即16位。比如要表示下面一个13 个字符的变量,就需要26 个字节。

Dim strHello as String = "Hello, world!"

因此计算机智能存储二百多万个这样的字符串。很明显,如果字符串长度再加一倍,所能存储的字符串个数就要减半。

编程新手的通病在于不考虑数据类型对内存的影响。假定定义一个存储字符串的变量,并将一个数字存储其中,比如:

Dim content as String = "65536"

这个变量要消耗10个字节 (相当于80 位,一个字节8位) 的内存。要在字符串中存储这个数值,字符串中的每个字符都必须转换成数字来表示。这是根据 Unicode 码进行的。 Unicode码是用来定义计算机存储字符的标准方式。每个字符都唯一对应 0-65535 之间的某个值。

下面是字符串中每个字符所对应的Unicode码:

6 - Unicode码:54,二进制表示:0000000000110110

5 - Unicode码:53,二进制表示:0000000000110101

5 - Unicode码:53,二进制表示:0000000000110101

3 - Unicode码:51,二进制表示:0000000000110011

6 - Unicode码:54,二进制表示:0000000000110110

每个字符都要16位,所以在字符串变量中存储一个5位的数字,则需要80位。不如使用整型存储有效,因为一个整型只占用32位,应该写成:

Dim content as Integer = 65536

编者或作者: 我有闲    收录日期: 2008-10-22
参考或来源:

上一页: 位(bit)和字节(byte) 返回上级目录: 存储变量 下一页: 值的转换


© 2008 woyouxian.net 版权所有 Contact Us