32位和64位的区别
区别在于一次存取数据的位数。
c/c++ 数据类型区分32和64,但java不区分,因为JVM具有跨平台性,为看达到跨平台通信。
基本数据类型字节数
char:一个字节(java中2个字节)。
short int:2字节。
int:32位系统:4字节;64位大多是4字节(少数8字节)。
指针:32位:4字节;64位:8字节。
float:4字节。
double:8字节。
long:8字节。
基本数据类型取值范围
有符号的:-2^(字节数*8-1)~2^(字节数*8-1)-1
无符号的:0-2^(字节数*8-1)-1
例如:int取值范围:-2^31~2^31-1
取值范围的解释
无符号的:即非负数
以int为例:最小值0,最大值的二进制为01111111 24个1,即2^31-1
有符号的:
以int为例:最大值和有符号一致,最小值为正数的二进制取反,即10000000 24个0,即-2^31。
关于补码
正数的补码是本身,负数的补码是其绝对值的二进制取反+1,0的补码是000000。
例如int,5是0101,-5就是1010+1=1011。
反推:0101+1011=(最高位1被舍弃)0000=0。正确!