Java中的基本数据类型的范围,在底层如何表示?

int类型在底层使用补码表示,是【-21亿多~21亿多】的范围:https://www.cnblogs.com/biehongli/p/12370693.html

  • 因为int占4字节,32位,最高位是符号位0/1
    • 正数最大011111...111,计算2^0+2^1+2^2+2^3...+2^30,等比数列求和得:2^31-1
    • 负数111111...111,为-(2^31-1)
    • 0的表示为:000000...000
    • 还剩一个100000...000,本来也表示0,但0有两种表示太浪费了
    • 因此100000...000用来表示负数(因为符号位是1),由于100000...000本身表示2^31,因此用来表示-2^31
      • 其实10000...000的真正补码表示为:1100000...000,但最高位1溢出了


 

补充:Java基本数据类型的大小 https://blog.csdn.net/m0_37479246/article/details/79492828

1.字节:byte:用来计量存储容量的一种计量单位;位:bit

2.一个字节等于8位  1byte = 8bit

char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字。

整型:

byte:1个字节 8位 -128~127

short :2个字节 16位

int :4个字节 32位

long:8个字节 64位

浮点型:

float:4个字节 32 位

double :8个字节 64位

注:默认的是double类型,如3.14是double类型的,加后缀F(3.14F)则为float类型的。

char类型:

char:2个字节。

Boolean 类型

boolean: (true or false)(并未指明是多少字节  1字节  1位 4字节)

补充:BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。

posted @ 2020-08-31 22:30  king断雨  阅读(239)  评论(0)    收藏  举报