正数我会计算,但是负数的值是如何得出的呢??

解决方案 »

  1.   

    定义一个byte类型的数字127,然后加上28,你试试得多少.
      

  2.   

    这个要看看java中int型的占多少字节
      

  3.   

    我记得Integer类有两个静态常量
    1.MAX_VALUE值为 2的31次方-1 的常量,它表示 int 类型能够表示的最大值。
    2.MIN_VALUE 
     值为 -2的31次方 的常量,它表示 int 类型能够表示的最小值。
    直接用就好.
      

  4.   

    java的int类型相对于C的long类型,这个在jni.h头文件中有定义。
    java的int类型在c中表示为jint类型。
      

  5.   

    java中int是32位 --> 数值范围长度是2的32次方
    --> java中没有unsign数值的概念,因此正数和负数各占一半
    --> 负数:[-2的31次方, 0)
        正数:[0, 2的31次方-1]   将0作为正数处理
      

  6.   

    用BigDe什么的 现在手边没有api 不好意思用工具用多了不会写了实在抱歉
      

  7.   

    答:负数的值是这样得出的:JAVA中int是4个字节,
    数0 = 00...0000(共32个0)
    数-1= 11...1111(共32个1)
    数-2= 11...1110(共31个1,最后一个是0)
    数-3= 11...1101
    数-4= 11...1100(共30个1,最后两个是0)
    这样排下去
    最后一个负数[最小]是-2的31次方=100..00(一个1,最后31个是0)
      

  8.   

    领会一下二进制补码表示法。更正一下楼上的问题,java并不规定int占多少个字节,只规定了能表示的范围,最大值和最小值。
      

  9.   

    Java中的int是32位的。
    那么int的范围是:-2^31 ~ (2^31 - 1)
      

  10.   

    11楼的够详细了的吧.你不是会算正数吗?4个字节,最高位是符号位,1用来表负数。剩下31个bit来表示数值,1000...00(31个0)~11111...11(32个1),不是2的31次方多个变化吗?每一个变化用来表示一个负数。至于每一种变化表示那个负数,那你还要学习一下原码、反码和补码的知识。
      

  11.   

    答:ZangXT兄弟,你不会是真的不知道,并且真的是这样认为“java并不规定int占多少个字节”的吧?或者:你错看成了这是一个C++的问题了吧。
    有空还是认真看一看最权威的JLS(第三版)吧[4.2小节]
      

  12.   

    Sorry,看过JLS,有点东西记混了。
      

  13.   

    大企鹅也出现这种情况,呵呵今天差点去看Inside JVM了
      

  14.   

    不对,应该是2147483647,这才是int最大值