D:\jdk>java MyByte
1111111
11111111111111111111111110000000D:\jdk>
BYTE类型的取值是-128-------127
为什么他们的二进制形式是这样呢.不明白.
有没有高人给解释一下!

解决方案 »

  1.   

    怎么有32位啊
    BYTE是一个字节,就是8位啊
    你是不是程序错了啊
      

  2.   

    class MyByte
    {
    public static void main(String [] args)
    {
    byte b=127;
    byte c=-128;
    System.out.println(Integer.toBinaryString(b));
    System.out.println(Integer.toBinaryString(c));
    }
    这是我的源码.
    我也感觉不对呢.
    还有一个问题:01111111表示127(0为符号位),那负数最大应该是11111111(1是符号位)啊!
      

  3.   

    System.out.println(Integer.toBinaryString(-1));
    11111111111111111111111111111111
    System.out.println(Integer.toBinaryString(-128));
    11111111111111111111111110000000-1-(127)