一、数据类型
注释:另外还有复数浮点类型:float_Complex、double_Complex、long double_Complex*
二、数据存储
-
数据范围
注:long表示长整型,为long int的缩写,长度至少32位,而64位类Unix系统为64位。(一般不建议使用,表示长整型可直接用longlong:-2^63 ~(2^63 -1))
-
存储形式
-
[ 整型数据]:
整型数据无论正负都是以二进制数补码的形式存储的。对于有符号的数据,则在存储单元的最高位为符号位,1 表示负数,0 表示正数;对于无符号的数据,则没有符号位,所有的存储单元均为数据位。
例如,十进制数13的补码就是其原码1101,所以13在内存中的存储形式为(以两个字节为例)0000 0000 0000 1101。十进制数-13的补码是1111 1111 1111 0011,即其在内存中的存储形式。
注:求补码的的方法 在计算机中整数有原码(该数二进制形式),反码(除最高位的符号位不变外,其它位取反)和补码(正数的补码就是原码,负数的补码位除最高位符号位不改变外,其他位在原码的基础上取反再在最末尾加 1),补码的作用就是可以将减法转化为加法,简化硬件电路设计。
-
[ 实型数据]:
实型数据也称为浮点型数据。实型数据均为有符号数据,没有无符号数据
目前C/C++语言采用IEEE—754标准来存储实型数据,它在内存中是以规范化的指数形式(小数部分的小数点前只允许一位有效数字)存放的。系统把一个实型数据分成小数部分和指数部分,分别存放,例如-8.25(-1000.01=-1.00001*2^3),存放为符号位为1(表示负数),指数位为(3+127)=130=(10000010),尾数位为m-1=(00001)(尾数位第1个数都为1,为了节省内存使用,通常把1省略)。
注:一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码
float:30~23位表示指数位, 实际上指数位表示的实际指数应该是无符号位数减去127
例如0000 0000 表示0 - 127=-127;换句话説,内存中储存的是指数 e + 127 后的移位数。
double:内存中储存的是指数 e +1023后的移位数。
- [字符型数据]:
字符型数据分为有符号和无符号两种,在内存中一个字符型数据占用一个字节,一ASCII码的二进制形式存放的