总是第一位是1表示负数吧。可是它是没有符号位的。不解中

解决方案 »

  1.   

    java哪里有无符号整数?short第一位本来就是符号位 
      

  2.   

    网上google下,都是这么说的。
      

  3.   

    lz去Google一下two's complement吧,java的整数表示都是用这种方式话说two's complement的中文叫啥来着?
      

  4.   

    你说的是one's complement就是表示负数的时候,把相对应的正数表示每位都反转,比如0011表示3,-3就是1100。不过Java用的是two's complement,反转之后还要+1,所以-3就变成了1101
      

  5.   

    大家还不信了。
    某权威网站就是这么描述short是无符号位的。
      类型    描述   取值范围
      Boolean 布尔型 只有两个值true、false
      Char  字符型   Byte 8位带符号整数 -128到127之间的任意整数  Short 16位无符号整数 -32768~32767之间的任意整数  Int 32位带符号整数 -231到231-1之间的任意整数  Long 64位带符号整数 -263到263-1之间的任意整数  Float 32位单精度浮点数 根据IEEE754-1985标准  Double 64位双精度浮点数 根据IEEE754-1985标准
      

  6.   

    唉,lz还是不明白知道整数数的三种基本表示方法吗? signed integer,one's complement和two's complement(抱歉,中文我真的不知道叫什么)。short是16位对吧,如果没有符号位,可以表达得值应该是0-65535,这点你不否认吧。正因为Java用的是two's complement,表达的值才是-32768~32767
      

  7.   

    short: The short data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive).参见 http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html
      

  8.   

    short的最高位到底是不是符号位。如果不是。
    那负数如何表示:
    two's complement
    仅仅是指的是如何计算它的值而已。
      

  9.   

    谁说two's complement只是计算。最高位可以说是符号,正是因为用的是two's complement,最高位才可以被看作是符号。但是并不是像你想的那样,在two's complement的基础上专门用一个数位来表示符号,不是这样的。正确的说法就是,正是因为用的是two's complement的表示方法,最高位才可以被看作是符号。
      

  10.   

    int 也是two's complement表示方法??!!
      

  11.   

    整数中byte short int long 都是two's complement,只有char不是
      

  12.   

    one's complement  反码
    two's complement  补码
      

  13.   

    LZ  执行下这个  byte b=127;
    System.out.println(++b);
      

  14.   


    one's complement叫反码,我说的那个是补码,参见18楼