Java中的强制类型转换?求大神解答!解决办法

Java中的强制类型转换?求大神解答!
 public class Lesson
{
   public static void main (String args[])
     {
         int a=130;
         byte b=(byte)a;
         int c=-130;
         byte d=(byte)c;
         System.out.println(b);
         System.out.println(d);
     }
}


输出的b=-126  d=126    //不懂?
为什么不是b=-130  d=125?


            130               10000010
强制成byte类型后任是      10000010       为-130.  为什么执行后是-126?
------解决方案--------------------
用Windows自带的计算器尝试一下你就知道了
首先int类型的130,二进制表示为00000000000000000000000010000010,转换为byte的规则是直接舍弃高24位,所以变成10000010,但谁告诉你这是-130了?你如果不会手动转换,那么看下面的计算器:
Java中的强制类型转换?求大神解答!解决办法

第二,int类型的-130,二进制表示为:
Java中的强制类型转换?求大神解答!解决办法
舍弃24位,转换为byte就是:
Java中的强制类型转换?求大神解答!解决办法
------解决方案--------------------
引用:
byte 为1个字节,int 4个字节,int 转换为byte是只截取最后一个字节, 10000010(这里是补码),你转化为原码(11111110)就是结果了


引用:
Quote: 引用:

Quote: 引用:

 public class Lesson
{
   public static void main (String args[])
     {
         int a=130;
         byte b=(byte)a;
         int c=-130;
         byte d=(byte)c;
         System.out.println(b);
         System.out.println(d);
     }
}


输出的b=-126  d=126    //不懂?
为什么不是b=-130  d=125?


            130               10000010
强制成byte类型后任是      10000010       为-130.  为什么执行后是-126?


nihao,


555555


引用:
Quote: 引用:

Quote: 引用:

 public class Lesson
{
   public static void main (String args[])
     {
         int a=130;
         byte b=(byte)a;
         int c=-130;
         byte d=(byte)c;
         System.out.println(b);
         System.out.println(d);
     }
}


输出的b=-126  d=126    //不懂?
为什么不是b=-130  d=125?


            130               10000010
强制成byte类型后任是      10000010       为-130.  为什么执行后是-126?


nihao,


555555


引用:
Quote: 引用:

Quote: 引用:

 public class Lesson
{
   public static void main (String args[])
     {
         int a=130;
         byte b=(byte)a;
         int c=-130;
         byte d=(byte)c;
         System.out.println(b);
         System.out.println(d);
     }
}


输出的b=-126  d=126    //不懂?
为什么不是b=-130  d=125?


            130               10000010
强制成byte类型后任是      10000010       为-130.  为什么执行后是-126?


nihao,


555555