存储器被划分成若干个存储单元,每个存储单元从0开始顺序编号。列如一个存储器有128个存储单元,编号从0~127,如下图所示:
那么一个存储单元能存储多少信息呢?我们知道电子计算机的最小信息单位是bit(音译为比特),也就是一个二进制位。
8个bit组成一个Byte,也就是通常所讲的一个字节。微型机存储器的存储单元可以存储一个Byte,即8个二进制位。一个存储器有128个存储单元,它可以存储128个Byte。
微机存储器的容量是以字节为最小单位来计算的。对于拥有128个存储单元的存储器,我们可以说,它的容量是128个字节。
对于大容量的存储器一般还用以下单位来计量容量(以下用B代表Byte):
8bit=1B 1024B=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB
磁盘的容量单位同内存是一样的,实际上以上单位,是微机中常用的计量单位。
问:为什么一个字节要等于8个二进制位?
答:简单的说,就是编码发展的过程。从最早的打孔I/O到后来的键盘显示器,我们处理的数据也在不断发展:数字、控制符、符号、英文字符、多国语言字符。
处理整数运算我们只需要编码0-9十个数字和符号,4 bits就应该够了;后来我们要处理英文字符,需要给52个大小写字母编码;之后有了高级语言,要为高级语言的符号编码。表示每个单元的bit也在不断增加,一直增加到8bits,诞生了ASCII编码的标准。已经能涵盖日常使用的所有编码了,所以给每个单元起了个名字叫“Byte”。
1 Byte = 8 bits 其实是一个历史习惯问题,在当今的国际化unicode编码环境下1 byte已经很难成为表示一个字符的单元。在上文中Bob Bemer的建议是不要使用"byte"这个名称表示8 bits,而是用"octet"(八位组),因为有些设备的基本字符单元不是8bits。在通信与网络的资料中,经常能看到“octet”的使用。
BTW:在很多入门书中,仍然存在“1个英文字母占用1字节,一个汉字占用2字节”不负责任的说法,丝毫不提编码条件(编码字符集&字符编码方案),坑人无数。
问:解释下“一个英文字母占用1字节,一个汉字占用2字节”不负责任的说法?
答:一个汉字占用的存储空间大小取决于使用的编码,一个汉字占2字节,是在说国内的中文编码标准GB2312、GBK、BG18030。
现在更通用的编码标准是 Unicode,Unicode又有不同的实现,如UTF-8、UTF-16,在常用的UTF-8下,一个汉字通常是 3 字节。
问:你觉得你这样做自问自答有意思吗?
答:我个人觉得有意思,走自己的路,让别人去说吧。
问:哦,挺有意思的。期待你后续的问答。
答:当然,我还用继续努力下去。