计算机中的数据存储和数据运算

来源:互联网 发布:网络电视直播 编辑:程序博客网 时间:2024/05/03 09:23

前几天看了一本计算机导论的书,对于我这个并非计算机科班出生的人很有启发,想迫不及待的把这些学到的东西总结起来,前面看过的主要内容是数据存储和数据运算,这篇博客也主要讲的是数据存储和数据运算。


数据在计算机中以多种形式存在,如文字,视频,音频,图像,数字等,在计算机工业中使用多媒体来定义包含数字,文本,图像,音频和视频的信息!

那么计算机内部的数据是怎么来的?所有计算机外部的数据类型的数据都是采用统一的数据表示法转换后存入计算机中,当数据从计算机输出时再还原回来,这种通用的格式称为位模式。

所谓的位模式,是指一个由0和1组成的序列,如果说要存储一个16位的位模式,那么我们需要16个电子开关,如果要存储1000个位模式,每个16位,那么我们需要16000个电子开关。通常长度为8的位模式被称为一个字节,有了位模式,那么无论什么数据类型的数据都可以以相同的形式存储到计算机中,下面,对文字,视频,音频,图像,数字这些类型的数据是如何存储在计算机中进行一一阐述!

1.数字

数字在存储到计算机中之前将被转换为二进制系统,那么存储普通的不带符号的小数大家自然都懂,直接转换为二进制就行了,如果是带符号的小数呢?这就存在两个待解决的问题:<1>如何存储数字的符号?<2>如何显示十进制小数点?

对于小数点,计算机使用两种不同的表示方法:定点和浮点。第一种用于把数字作为整数存储(没有小数),第二种用于把数字作为实数存储(带有小数部分);

先讨论存储整数:

整数可以被当做小数点位置固定的数字,因此,定点表示法用于存储整数(小数点位置固定的表示法),对于一个整数来说,小数点固定在最右方,在这这种表示法中,小数点是假定的,但并不存储。但是,用户有时候会将整数作为小数部分为零的实数进行存储,例如,整数过大以至于无法作为整数来存储(书上的这句话一直不太理解),为了更有效的利用计算机的内存,无符号和有符号的整数在计算机中的存储方式是不同的。

<1>无符号表示法:

*首先将整数变为二进制数。

*如果二进制位数不足n位,那么在二进制整数的左边补0,使它的总位数为n,如果大于n位,那么整数无法存储,导致溢出。

例:将7存储在8位存储单元中:得到的结果是00000111

溢出:

例:将20存储在4位存储单元中:输入的是20,但是输出的结果并不是20,而是4,因为4位存储单元最多只能存储0到15这16个数,而如果溢出,则会进行下一个循环。

无符号整数的应用:

1.计数

2.内存寻址,有些计算机语言,在一个存储单元中存储了另外一个存储单元的地址,地址都是从0(存储器的第一个字节)开始到整个存储器的总字节数的正数

3.为其他数据类型排序

<2>符号加绝对值表示法

符号加绝对值表示法在存储整数中并不常见,但该格式用于在计算机中存储部分实数。

在这种表示法中,最左边一位用于定义整数的符号,0表示正数,1表示负数

例如:将+28存储在8位的存储单元中:最后的结果是00011100

溢出:

同无符号表示法的溢出

符号加绝对值表示法的应用:

1.存储部分实数

2.用于采样模拟信号

<3>2进制补码表示法

几乎所有的计算机都用二进制的补码表示法来存储位于n位存储单元的有符号整数,这个方法的无符号整数的有效范围被截取为两半,一般用于存储正数,一般用于存储负数,如果是一个4位的存储单元,该范围是0000到1111,这个范围被分为两半,0000到0111和1000到1111,前半部分表示的是正数,后半部分表示负数。与符号加绝对值表示法一样,首位表示数字的符号,0表示正数,1表示负数。所以这个范围能表是的整数是从-8到7.

如何获得一个二进制数的补码?

1.从数的最右边开始复制,直到遇到1停止,左边的其他位全部取其反码

2.先将数取反码,然后再加1

以二进制补码格式来存储整数:

*将整数变为二进制数

*如果整数是正数或0,以其原样存储;如果是负数,计算机取其补码存储

以二进制补码格式还原整数:

*如果最左位是0,不进行操作,如果是1,那么取其补码

*计算机将该整数转换成十进制

也许有些同学会有疑问:为什么计算机存储整数的时候不直接用符号加绝对值法存储而要用相对复杂的补码形式来存储呢?下面我们来推演一下

假设有这样一个运算:10-8,8位位模式来存储,10的二进制表示法表示的结果是:00001010,-8的二进制表示法用符号加绝对值法表示出来是:10001000,用补码表示法表示出来的结果是:01111000,那么分别用二进制的加法来运算,得到的结果分别是10010010,00000010.前者转换为10进制为-18,后者转换为十进制是2,那么显然后者是更加符合逻辑的。

二进制补码表示法的溢出:

同上面两种方法的溢出,循环!

下面开始讨论实数的存储:

首先声明的是:尽管固定小数点表示法可以用来表示实数,但结果不一定精确或达不到需要的精度。所以要使用另外一种方法:即浮点表示法:

在浮点数表示法中,实数被分为三个部分来存储:符号,位移量,和定点数

比如:0.0000000304,先用科学计数法来表示:3.04*10^-8;这三部分为符号(+),位移量(-8)以及定点部分(3.04)

0 0
原创粉丝点击