黑马程序员技术交流社区

标题: 关于数据类型的基础问题!! [打印本页]

作者: 黄方    时间: 2012-3-5 13:27
标题: 关于数据类型的基础问题!!
我想知道byte  int  long  等等基本数据类型能表示数的范围是多少呀?是一个一个的记的吗?我想应该有个公式之类的吧。搞了好半天没搞出来,坐等解析啦
作者: 唐兴旺    时间: 2012-3-5 13:39
byte:-2的7次方~(2的7次方-1)
short:-2的15次方~(2的15次方-1)
int:-2的31次方~(2的31次方-1)
long:-2的63次方~(2的63次方-1)
规律应该就是你记住byte,剩下的次方数依次*2+1。
作者: 肖岑锋    时间: 2012-3-5 13:48
楼上正解
作者: 胡元    时间: 2012-3-5 13:51
因为计算级内部是2进制运算,byte是8个二进制,去点符号位就是7个二进制,所以是-2的7次方到2的其次方减1,而int是32位,去掉符号位是31位,所以原理和上面相同
作者: 段玉超    时间: 2012-3-5 14:07
不用记得 当然记得做好 想 int byte long float 和 double 这样的基本类型都对应的有 相应的包装类型 都在 java.lang语言包中,他们基本上都提供  MAX_VALUE 和MIN_VVLUE 静态字段,可以通过他们 获得 他们的最大值,最大值。如果是是整形的 int、或long ,MAX_VALUE 加上 1 就是最小值。 浮点型的 会复杂一些,浮点型的Min_Value 提供的是 该类型可以容纳的最小的正数 。JAVA 中没有对溢出检查溢出,这个是有危险的 这也是,为什么MAX_VALUE+1 可以得到最小值。因此,在所大数值运算的时候 要特别注意,最好检查一下,不过 JAVA也提供了BigInteger ,还有一个好像 叫BigDecimal(具体记不清了)可以实现任何大小数值的计算。
作者: 王利强    时间: 2012-3-5 14:45
都是以二进制形式存在于计算机中的,byte型在内存中占一个八位,short型是两个八位,int型是四个八位,long是八个八位,减去符号位,就算出来了
作者: 黄方    时间: 2012-3-5 20:07
唐兴旺 发表于 2012-3-5 13:39
byte:-2的7次方~(2的7次方-1)
short:-2的15次方~(2的15次方-1)
int:-2的31次方~(2的31次方-1)

嗯嗯,谢谢!我明白了!
作者: 种法腾    时间: 2012-3-5 20:26
学习了

作者: 刘雷冲    时间: 2012-3-5 22:03
问题不错,多谢指教学习了。
不过,我了解容量小的类型自动转换成容量大的类型





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2