1、语言是信息的载体,信息的本质就是数据。语言的本质是一种对信息或数据的计算;计算机的语言本质是一种数据计算,自然语言的本质也是一种数据计算。自然语言与计算机语言的本质相同,由是,存在计算机语言与自然语言之间进行转换的可能性。而这个转换也是一种计算,是数据从一种形式经计算转换成另一种形式,且这种计算并不是唯一的,也就是说转换的方法不唯一,计算的过程可以不唯一,但转换结果可以是相同的。
2、最简单的语言就是计算机语言,计算机语言从生活实践中的自然语言需求中提炼抽象简化而来。自然语言与计算机语言之间的桥梁就是数学计算。考察计算机语言与自然语言处理信息数据的关系,我们可以知道,当代计算机处理的基本数据类型与自然语言中数学处理的基本数据类型有一一对应关系。
3、这些基本数据类型都可以对应到数学的基本数据类型上。每种数据类型有不同的处理方式。计算机语言中的数据类型有:整型、浮点、有符号、无符号。再加上每种机型最基本的数据大小的限制字长,就衍生出计算机语言的基本数据类型:int, long, float, double, unsigned int, unsigned long。(共六种,没有无符号浮点数据这种类型{为什么没有?不需要吧。因为float的定义本身就是有符号的包括它的阶码也是有符号的。最初的计算机也都是仅有定点运算的机器。而浮点的计算也是通过定点计算达到的一种特殊实现,浮点需求是来自自然语言的习惯与使用需求(处理更大范围的实数(包括小数)的需求,可以由独立的计算机芯片装置实现提供了计算的方便性,而且由硬件实现比由纯软件实现浮点计算在性能上要提高许多)})
4、字长,是计算机一次计算能操作的数据的最大长度限制。对于特定的计算机来说,这基本是固定的。这个大小在一台计算机中可变也是可以的,只是,那将会使此计算机的实现变得更加复杂。而通常这个计算机的字长是由计算机中的基本数据处理单元的寄存器的大小来限制的。比如16位字长的计算机,是指其基本数据处理单元的寄存器处理数据的大小限制是16位的;32位字长的计算机寄存器的大小就是32位长度的。
5、现代计算机中的字长基本都是64位的了。但,作为最初阶段从自然语言处理数据的需求中凝固下来的需求,8位长度的数据有一定的能适应基本日常处理中的数据的能力,被称为字节作为基本的数据处理单元而被保留了下来。而且数据的寻址基本也是按字节的大小来寻址编码的,并非按实际字长来寻址编码,也不是按位进行编码的。比如:32位字长的机器,其数据存储单元的寻址是按8位的字节来编码的;数据地址0x00000000,与数据地址0x00000001,每个地址的数据都是一个字节。但对特定字长的计算机来说,每次处理数据总是存取字长的整数倍的数据。于是,对于非8位字长的机器如现在通用的32位机和64位的机器来说就出现了数据字节对齐的问题。如果一个数据的起始存储位置总是4的倍数的话,将有利于快速存取数据,因为4*8=32位。而现代计算机中的64位字长的实际实现也是由两个32位组合来的,64位的寄存器,也可以分作两个32位的寄存器来被进行操作。这里讲的操作,也就是基本的计算机指令系统中的一条指令。
6、我们学习计算机组成原理的时候,都知道计算机数据在机器中的表示方法(原码与补码),也知道了,原码有无符号的计算过程,在用补码替换后,其计算过程是一致的。也就是说,有无符号用补码方式进行计算,是可以不区分有无符号的。因此,在机器语言中,现代CPU硬件设计的都是按数据的补码进行运算的,机器指令传给CPU计算的数据都是补码形式。但,因为自然语言是从逻辑上要区分有符号无符号数据的,于是在汇编语言一层,就已经有了特别的指令区分。在汇编语言层面,加减法指令是不区分有无符号的;而乘除法等一些其他指令,是由有符号和无符号两套指令系统组成的。在机器中也就设立了相应的硬件设备符号寄存器来标识计算结果的符号位,以做高级语言逻辑上的区分。
7、无符号数只能表示正数,有符号数可以表示负数(最高位为1)。机器中包括寄存器和内存,存储的都是可计算数据的补码形式,至于是加是减,结果是什么符号,还要结合标志位进行判断,标志位中有进位标志(CF),溢出标志(OF)。虽然,从原理上讲,所有的减法都可以由加法器的加法来实现,但是在汇编一级,指令还是有一套减法指令的,包括结合各标志位参与运算的减法指令。
网友评论