32/64位系统不同数据类型所占字节数和取值范围

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

1、整型数据int、long 所占字节数

早期的操作系统是16位系统,
int用二字节表示,范围是-32768~32767;
long用4字节表示,范围是-2147483648~2147483647。

后来发展到32位操作系统,
int 用4字节表示,与long相同。

目前的操作系统已发展到64位操作系统,但因程序编译工艺的不同,两者表现出不同的差别:
32位编译系统:int占四字节,与long相同。
64位编译系统:int占四字节,long占8字节,long数据范围变为: − 2 63   ˜ 2 63 − 1 -2^{63} \~\ 2^{63-1} 263 ˜2631

long=long int

指针大小与系统编译器位数相同,16位编译器(2字节)、32位编译器(4字节)、64位编译器(8字节)

编码与中文:
Unicode/GBK: 中文2字节
UTF-8: 中文通常3字节,在拓展B区之后的是4字节
综上,中文字符在编码中占用的字节数一般是2-4个字节。

int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):

sizeof(short int)<=sizeof(int)

sizeof(int)<=sizeof(long int)

short int至少应为16位(2字节)

long int至少应为32位。

下面给出不同位数编译器下的基本数据类型所占的字节数:

编译系统short(int)intlonglong longcharchar *pdoublefloat
8位系统/编译器
16位系统/编译器22481284
32位系统/编译器24481484
64位系统/编译器24881884

2、32位系统下整型数据的取值范围

类型范围
int-2147483648 ~ 2147483647
unsigned int0 ~ 4294967295
long-2147483648 ~ 2147483647
unsigned long0 ~ 4294967295
long long-9223372036854775808 ~ 9223372036854775807
unsigned long long0 ~ 1844674407370955161
__int64-9223372036854775808 ~ 9223372036854775807
unsigned __int640 ~ 1844674407370955161

3、Java基本类型占用的字节数

Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。(一个字节等于8个bit)

3.1.整型
类型存储需求bit数值范围备注
int4字节4*8
short2字节2*8-32768~32767
long8字节8*8
byte1字节1*8-128~127
3.2.浮点型
类型存储需求bit数值范围备注
float4字节4*8float类型的数值有一个后缀F(例如:3.14F)
double8字节8*8没有后缀F的浮点数值(如3.14)默认为double类型
3.3.char类型
类型存储需求bit数值范围备注
char2字节2*8
3.4.boolean类型
类型存储需求bit数值范围备注
boolean1字节1*8false、true

补充:Java有一个能够表示任意精度的算书包,通常称为“大数值”(big number)。虽然被称为大数值,但它并不是一种Java类型,而是一个Java对象。

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigIntegerBigDecimal(Android SDK中也包含了java.math包以及这两个类)这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。具体的用法可以参见Java API。

4、经验总结

  • 运算需要低于十个数的时候用int,低于二十用 long/longlong

  • unsigned(无符号)类型范围 = 有符合类型的正数范围*2

点击【关注】不迷路哦~~

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值