信息的本质

    技术2022-05-11  90

    <<深入理解计算机系统>>一书中的作者给对信息做了如下的描述:“信息就是位与上下文”,可谓简短而精辟,我对这句扩充了一下:“信息就是位的有序集合与它所处的上下文环境”。我们知道,计算机系统中所有的信息,包括内存中的程序和数据,磁盘,光盘,网络上传输的数据等,尽管这些信息的物理存在形式是不同的,但是它们有一个共性:构成它们的基本元素有且只有两种状态,而信息就是这些元素的离散,线形,有序的集合。基于这样的共性,我们研究时从抽象的视角看来这些信息都可以用一串二进制比特位来描述。区分不同数据的唯一方法就是看这串比特所处的上下文环境,在不同的上下文环境中,同样的比特序列可能表示一个整数,浮点数,字符,颜色,声音,图象,机器指令等不同的信息。         不同的软硬件对比特序列的理解和解释是不同的,例如:当记事本软件读到比特序列时,它会按照字符的编码形式去解释这些比特序列,因此当信息的组织不是文本时,就会出现乱码;当媒体播放器去读比特序列时,它会按照煤体的编码形式去解释这些比特序列;当CPU读到比特序列时,它会按照它预先设计好的指令集的格式去解释这些比特序列。所以说:所有的信息都是二进制的信息,只是这些二进制数据的组织方式不同而已。编译器把源程序翻译为目标程序,作用就是把按照字符编码格式组织的二进制序列翻译为按照目标机器的机器指令格式组织的二进制序列。         很多书上说:计算机处理的是二进制的信息,其实从物理层面上讲,计算机处理的信息本质上是:电压,磁,光等不同的物理实体,只是由于在计算机内部,它们在传递时,经过某种硬件处理上的约定,在接收者看来,这些信息都是以两种状态存在元素的有序集合,所以当有人说计算机中的信息就是0,1序列的时候,它是从抽象的,数学的角度上去描述的,而不是客观存在的本质。         反对有些书上说:编译器把源代码翻译为二进制代码。这种说法并不准确,实质上计算机中的所有信息都是以二进制的形式存在的,包括源代码在内,只是这些二进制信息的组织形式不同而已,这种不同只能由编码者和解码者来理解。更为准确的说法应该是编译器把源代码翻译为机器指令序列。那么编译器就是编码者,而CPU就是解码者。         从程序员的角度看,数据类型这一概念就是为了显式地描述一个比特序列所代表的含义,也可以认为它是作为显式地解释比特序列含义的一种手段。当然了,数据类型并不是必须的,只要你能保证自己能解释对一段二进制信息。只是有了数据类型这一概念,程序员在程序中在解释和处理信息时,就不容易出错,而且还有编译器帮忙做类型安全检查。当我们的程序不能准确地去解释一段信息的含义时,则有可能会造成信息乱码或者不能达到预期运算结果的错误。这就是数据类型这一概念存在的意义,也是编译器类型检查的意义。当然数据类型还有一个很重要的作用就是:对数据以及数据的数学运算做抽象,在这不再详细讨论。  

    最新回复(0)