int是32位有符号,byte是8位有符号。int 257==>00000000 00000000 00000001 00000001
byte b==>00000001==>1(转换后保留后8位)
int 256==>00000000 00000000 00000001 00000000
byte b==>00000000==>0(转换后保留后8位)
int 130==>00000000 00000000 00000000 10000010
byte b==>10000010==>-126(首位为0表负数,补码表示)

解决方案 »

  1.   

    谢谢,明白了很多,但恕小弟驽钝在多问一句:
    如果i = -100; 
    int -100==>10000000 00000000 00000000 01100100 (保留后8位)
    byet b==>01100100 ==>100
    为什么却是-100呢?
      

  2.   

    int -100==>11111111 11111111 11111111 10011100(保留后8位)
               (System.out.println(Integer.toBinaryString(-100));)
    byet b==>10011100 ==>-100byte表数范围+127 --- -128内的数可从int正常转换
      

  3.   

    to:blackpark(暖咖啡)
    你-100的表示有误,int里负数也是用补码表示的
    int -100==>11111111 11111111 11111111 10011100
    byte b  ==>10011100 ==>-100