数据在计算机中的存储

 计算机数据     |      2020-11-18 03:26

  在上一篇写到冯诺伊曼结构中计算机的硬件组成,第一个就是存储器,用于存储数据和程序。那么这一节来梳理一下在计算机中这些数据是怎么存储的。

  符号加绝对值表示法,最高位用于表示符号,0表示正,1表示负。先将绝对值转化为二进制,二进制不足n-1位的左边补0,再加上最高位的符号位。举例说明如下:

  实数存储步骤如下:1.先规范化,移动小数点使得小数点左边只有一个1 。2.分别对符号、指数、尾数进行处理 。 3.连接符号、指数、尾数

  写到这里还是有些晦涩,下面就用我们熟悉的单精度和双精度来看一下。首先IEEE标准规定,单精度数用32位来存储,双精度数用64位来存储。

  对于单精度来说,要用一位来标识符号,用8位来存储指数,用32位来存储尾数

  对于双精度来说,要用一位来标识符号,用11位来存储指数,用52位来存储尾数

  文本不能像数值那样可以转换为二进制,那我们是如何处理的呢?基本思想是:用一个二进制数来映射。我们熟悉的ASCII码就是一种映射对应关系。最开始时ASCII码是由美国人提出的,在英文中只有26个字母再加上一些符号,一共有127个,占用了最高位为0的8位二进制数就能映射完成,即0000 0000——0111 1111,十进制是0——127.ASCII表如下:

  之后欧洲的ISO-8859-1 在ASCII的基础上,用了最高位为1的8位二进制数。称为扩展ASCII编码表。

  那汉字是如何存储呢?我们知道常用汉字有几千个,用8位二进制肯定无法映射完,所以采用了16位两个字节,也称为全角(ASCII 半角)

  我们常用的编码表还有Unicode,其中更加转换规则的不同,又有UTF-8、UTF-16、UTF-32.

  因为音频会随着时间或空间连续的变化,存储时用的是模拟数据。涉及到声音的采样,所谓的采样就是选择采样的点来量度声音的值并记录下来。

  而采样率就是每秒的采样数目,之后再经过量化将样本的值四舍五入为一个整数的过程。再编码,如果样本值为正数用无符号表示法,如果样本值有负数就用符号加绝对值表示法。而用于存储样本所用的二进制位数称为 位深度。位率表示 每秒音频存储时所用的二进制位数(位率=位深度*采样率)