解决方案 »

  1.   

    用Windows自带的计算器尝试一下你就知道了
    首先int类型的130,二进制表示为00000000000000000000000010000010,转换为byte的规则是直接舍弃高24位,所以变成10000010,但谁告诉你这是-130了?你如果不会手动转换,那么看下面的计算器:
    第二,int类型的-130,二进制表示为:舍弃24位,转换为byte就是:
      

  2.   

    byte 为1个字节,int 4个字节,int 转换为byte是只截取最后一个字节, 10000010(这里是补码),你转化为原码(11111110)就是结果了
      

  3.   


    nihao,555555
      

  4.   

    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555
    nihao,555555233
      

  5.   

    byte的取值只有-127~127 ,130和-130发生了越界
      

  6.   

    当然先要理解byte的取值范围;然后类型转换时尽量不要由上往下;如 int -> byte,会被截掉的;
      

  7.   

    java中int类型占4个字节,byte是1个字节,强制类型转换后自行舍去前三个字节,即高24位,所以最后剩下10000010,转换成原码就是你所要的结果了,在进行转换的时候注意每种数据类型所占据的字节数,还有数据在内存中是一补码形式存储的,加油
      

  8.   

    楼主的意思是:byte范围是-127~127,130超了3,再往回去就是-127,-126,-125,为什么不是-125?   他应该是这个意思~~~
    我也有疑问~~~~得恶补下补码问题了~~~~~   谁来解释下~~