数据溢出

来源:互联网 发布:c 高级编程pdf 编辑:程序博客网 时间:2024/05/09 03:15

     计算机中的数据都是以补码的形式存储在硬件上的,并以补码的形式参与运算。

    有符号数中的正数的补码就是其原码;负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。

    根据补码求原码的方法为:

(1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。

(2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

 

 

    分析一下的代码输出:

public class NumTest {
 public static void main(String[] args) {
  byte a=72;
  byte b=64;
  byte c;
  c=(byte)(a+b);
  System.out.println(c);
 }
}

 

因为72的存储方式(补码)为:01001000

64的存储方式(补码)为:    01000000

它们在底层是以补码的形式通过加法器相加的,结果为10001000

10001000的原码为11111000,所以结果应为120.

输出为120,分析正确。

原创粉丝点击