C中:
short:短型,范围-32767~32767 即-(2^15-1)~(2^15-1),C++标准中只限制规定short int不能超过int的长度,具体长度的可以由C++编译器的实现厂商自行决定,short 占2字节,一般是16位
unsigned short:无符号短型,0 到 65535(2^16 - 1)
int:整型,范围-32767~32767 即-(2^15-1)~(2^15-1),在32位系统中占4个字节,16位系统中占2个字节,一般是32位或者16位
unsigned int:无符号短型,0 到 65535(2^16 - 1)
long:长整型,范围-2147483647 到 2147483647 即 -(2^31 - 1) 到 (2^31 - 1),一般是32位
unsigned long :无符号长整型,范围是 0 到 4294967295(2^32 - 1)
long long:长长整形,范围是 -9223372036854775807到 9223372036854775807即(-(2^63 - 1))~(2^63 - 1)一般是64位
unsigned long long :无符号长长整形,是 0 到 18446744073709551615(2^64 - 1)
float:单精度浮点型,在机内占4个字节,用32位二进制描述,
1bit(符号位) | 8bits(指数位) | 23bits(尾数位) |
float的指数位有8位,float的指数范围为-127~+128
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
float的精度为6~7位有效数字
double:双精度浮点型,在机内占8个字节,用64位二进制描述
1bit(符号位) | 11bits(指数位) | 52bits(尾数位) |
double的指数位有11位,而double的指数范围为-1023~+1024
double的精度为15~16位
double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308
PS:浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,
0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。
double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多
并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围
float和double的精度是由尾数的位数来决定的
OC中:
NSInteger:在32位系统中是int类型,在64位系统中是long类型
NSUInteger:在32位系统中是无符号int类型,在64位系统中是无符号long类型
CGFloat:在32位系统中是float类型,在64位系统中是double类型