校园二手交易网站设计的原则,群辉搭wordpress,做徽商要做网站吗,中欣卡网上购物商城Java中#xff0c;long型是64位的#xff0c;float型是32位的。为什么long型可以自动转float型呢?这里就涉及到浮点数在内存中的存储问题了。对于byte#xff0c;short#xff0c;int#xff0c;long四个整数类型而言#xff0c;它们在内存中无一例外都是直接换算成二进…Java中long型是64位的float型是32位的。为什么long型可以自动转float型呢?这里就涉及到浮点数在内存中的存储问题了。对于byteshortintlong四个整数类型而言它们在内存中无一例外都是直接换算成二进制存储的所以我们可以直接计算出它们的最大值。二进制的第一位是符号位不计算入数值拿byte来说数据存储形式就是0000-0000一个字节占八位除去第一位符号位外后边全为1的话就是0111-1111换算成十进制答案是127.至于为什么最小的数是-128呢这又有讲究了。计算机中负数是以补码形式存储的一般说来八位以内最小的负数应该是11111-1111我们对其取反结果就是1000-0000再得到补码即1000-0001。是的0001补码是原码除符号位外逐位取反再加一的结果但是对于补码而言1000-0001并不是八位二进制能表示的最小的数最小的应该是1000-0000对1000-0000求原码就得到了1001-0000-0000即我们十进制数的-128。同样的对于short等其它整数类型也一样。那么float类型呢4个字节32位第1位是符号位(数符)即S接下来的8位是指数域(阶码)即E最后的23位是小数域(尾数)即M。对于一个十进制数112.5我们用科学计数法表示就是1.12510^2所以呢对于一个二进制数我们的表示就应该是1.XXX 2X由于第一位永远都是1所以直接省去因此表示为S.M*2E。所以float的取值范围是-2128到2128远远大于long的最大值。所以java中long类型自动转换为float类型。简单来说因为浮点数用科学计数法存储的而整数是用二进制存储的。所以虽然long型是64位的float型是32位但是float型所能表示的数要远远大于long型。