我正在学习(用java)编程的入门课程,我有兴趣了解为什么java中的原始数据类型的范围是这样的。当涉及到像字节这样的类似整数的数据类型时,似乎很容易理解为什么它只接受-128到127之间的值;一个字节的大小为8位,可以接受最多256个值,所以我们可以为这256个值中的每个值分配一个自然数,我相信这就是幕后发生的事情。这也解释了为什么128被排除在外:我们有128个负数,127个正数和零。这些加起来已经是256个了。在1,256和-128,128之间没有双向映射。
这个想法对于所有类似整数的数据类型的范围都是有意义的,但是当涉及到浮点时,人们会看到一些奇怪的范围。例如,double的范围是-2^{1074},(2-2^{-52})2^{1023}。为什么会这样呢?
我为这个麻烦的符号道歉,显然我不能在这里使用latex。
发布于 2020-10-25 10:31:28
浮点值和整数值是一样的--可用的位数。
IEEE双倍长度浮点值有64位,用法如下:
符号位:1位
指数: 11位
符号和精度: 52位
有效数是一个二进制小数,因此最大值(所有位设置)略小于1。
指数的值为0到2047,或-1024到+1023。这给出了从2到-1024到2到+1023的大致范围(实际上更小,因为有几个值是为特定用途保留的)。
https://stackoverflow.com/questions/64519478
复制相似问题