32位/ 64位 系统下基本数据类型说明

本文详细介绍了32位和64位系统中基本数据类型的差异,包括指针寻址空间的变化以及不同数据类型的字节数、位数和取值范围。着重讲解了long和unsigned long在两种系统下的区别,以及float和double的精度和范围。此外,还提到了数据表示的进制和类型后缀的使用方法。
摘要由CSDN通过智能技术生成

32位/ 64位 系统下基本数据类型说明

1、32位/ 64位系统差别:

计算机系统主要差别:指针寻址空间的差别:32位4字节 vs 64位8字节

指针类型变量大小只取决于计算机系统的位数,等于long int / long 或者 unsigned long类型大小,即计算机系统“字”的大小。(因为C语言为了保持跨平台的统一,所以char, short int, int, long long int都采用了固定位数,不随系统位数变化而变化,但是long int类型是根据系统位数决定的)。

类型32 位64位
long48
unsigned long48

未知系统下的数据所占字节数:可以使用sizeof单目运算符,获取某个数据类型所占用空间的字节数,例如sizeof(int),sizeof(short),sizeof(double)。

2、基本数据类型

32 位/64位编译器/机器,除了long/unsigned long外,其余数据类型都是相同。

类型字节数位数取值范围无符号unsingned
char18-2^7 ~ +2^7 ( -127 ~ +128)0 ~ 2^8 (0 ~ 255)
short int216-2^15 ~ +2^15 (-32767 ~ +32768)0~2^16 (0 ~ 65536)
int432-2^31 ~ +2^31 (-2147483648 ~ +2147483647)0 ~ 2^32 (0 ~ 4294967295)
long long864-2^63 ~ +2^63 (-9.22E+18~9.22E+18)
int_64864-2^63 ~ +2^63 (-9.22E+18~9.22E+18)0~ +2^64 (0~1.84E+19)
float432指数位8位(2^7=128) 取值-2^128 ~ +2^128 (-3.40E+38 ~ +3.40E+38)
double864指数位11位(2^10=1024) 取值-2^1024 ~ +2^1024 (-1.79E+308 ~ +1.79E+308)

对于float与double的范围和精度-特殊说明

类型float 32bits/4字节double 64bits/8字节
符号位指数位尾数位符号位指数位尾数位
位数(bit/位)182311152
取值0~1-2^7~2^7(-127~128) 见说明12^23 = 8388608 七位-2^10~2^10(-1023~1024)2^52 = 4503599627370496 十六位
组成整数部分小数部分整数部分小数部分
取值-2^128~+2^128 (-3.40E+38 ~ +3.40E+38)精度为6~7位有效数字-2^1024~+2^1024(-1.79E+308 ~ +1.79E+308)精度为15~16位有效数字

说明1:float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。

3、数据的表示

前缀(进制),后缀(数据类型),组合使用可表示各种类型的数。如下:

进制前缀数值后缀-长整型后缀-无符号型举例
8进制0205L或者lU或者u0205,0205L,0205u,0205Lu
10进制165L或者lU或者u165,165L,165U,165LU
16进制OXA5L或者lU或者uOXA5,OXA5L,OXA5U,OXA5LU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值