一、类型
英文表达是Type或者Pattern指包含由各特殊的事物或现象抽出来的共通点的抽象概念。是逻辑演算中关于主目的不可兼的分类谱系之一。具有共同特征的事物所形成的种类。它和类别的差异是:类型强调共同性,类别强调差异性。广义的类型一般被定义为一种约束,也就是一种逻辑公式。类型被认为是一系列满足确定约束条件的元素,更抽象的方式可以把一个类型当作规定一个约束条件,如果我们规定的约束条件越好,相对应的被定义元素的集合就越精密,所以逻辑公式(logical formulas)就成为描述类型特征的最合适工具。对任何事物进行分类,在特定环境下,应该只有一种标准,也就是约束条件要清晰明朗且要少。
二、数据类型
在《什么是数据》我们大致明白了什么是数据,那么数据类型就是对数据分类,根据我们今天谈的主题,按照一个标准,就是是否计算机处理的数据,我们可以分为计算机处理的数据和非计算机处理的数据两种类型。
三、计算机里的基础数据类型
就是对计算机系统存储和处理的数据根据计算机的存储特性来进行分类,在计算机的世界里,数据类型就是在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。。计算机里的数据有哪些特性呢:首先是数据是用二进制保存,其次是有长度限制,然后才是加上语义上的信息,那么根据这些特征来进行分类,计算机里的基础数据类型包括:字节、字、双字、布尔值、数值、字符等。
3.1、纯二进制数据类型
- 字节(byte)
对就是用二进制的的单位Byte作为了数据类型的名称,表示一个长度为8bit的二进制数据,范围0x00---0xFF,具体语义要根据使用场景来确定。 - 字(word)
也是用二进制的的单位word作为了数据类型的名称,表示一个长度为16bit的二进制数据,范围0x0000---0xFFFF,具体语义要根据使用场景来确定。 - 双字(dword)
也是用二进制的的单位dword作为了数据类型的名称,表示一个长度为32bit的二进制数据,范围0x00000000---0xFFFFFFFF,具体语义要根据使用场景来确定。 - 布尔值(bool)
占用8bit,表达逻辑上的真和假,取值范围(0,1)
这些数据类型通常没有明确的语义,需要在具体的使用场景才有具体的语义,比如我们在Windows系统里编程时,经常用到的一些标识数据,每一个位代表的意思不一样。
3.2、编码数据类型
除了上面的纯二进制数据类型外,还有一些基础数据类型是需要人为编码后,才能被计算机识别和处理的数据,比如数值和字符文本。这类数据在任何情况下它们的语义都是清晰明了唯一的。
3.2.1、数值型
对应了实数里的所有的类型:整数,有理数、无理数。在计算机里,数值根据计算机系统特征分了很多类型。整数包括了:整形、长整形、短整形,实数包括了:单精度浮点型和双精度浮点型。
整数:不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储。
- 整形
长度是32bit,有符号的表示范围-2147483648~2147483648,无符号表示的范围0~4294967295 - 长整形
跟整形一样,只是长度是整形2倍,是64bit ,表示的整数范围大很多,有符号的表示范围-9223372036854775808 ~9223372036854775807,无符号表示的范围0~1844674407370955161 - 短整形
跟整形一样,只是长度是整形0.5倍,是16bit ,表示的整数范围小很多,有符号的表示范围-32768~32767,无符号表示的范围0~65535
实数:在计算机系统的发展过程中,曾经提出过多种方法表示实数,但是到目前为止使用最广泛的是浮点表示法。相对于定点数而言,浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。
- 单精度浮点数
单精度浮点型专指占用32位存储空间的单精度(single-precision )值。单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。当你需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。其数值范围为-3.4E38~3.4E38 - 双精度浮点数
占用64位的存储空间。在一些现代的被优化用来进行高速数学计算的处理器上双精度型实际上比单精度的快。所有超出人类经验的数学函数,如sin( ),cos( ) ,tan()和sqrt( )均返回双精度的值。当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。其可以表示的数字的绝对值范围大约是:1.7E-308~1.7E+308
3.2.2、字符(char)
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,是计算机中经常用到的二进制编码形式,也是计算机中最常用到的信息形式。不同国家、民族和地区都有自己的符号系统,计算机系统要想表达这些符号,就必须对这些符号进行二进制的编码。根据符号编码的不同,字符的长度就不同。计算机常用的就是ASCII码,主要用来表示英文世界的常见符号,一个字符占用8bit长度,而中文字符常用编码是GBK,一个中文字符占用16bit。
总之,在计算机系统里,通过对这些基本数据的使用、组合可以表达对整个宇宙的描述和模拟,构成了现在丰富的计算机世界。对程序员来讲,要善于使用不同的编程语言和数据结构来使用和组合这些基础数据类型,完成我们构建世界的使命。