输出byte类型的值为128结果为-128的缘由

声明:若有不对,请联系笔者,及时改正,共同窗习。
ide


先上一段代码:
学习


  
  
  
  
  1. public static void main(String[] args) { 
  2.         byte b = (byte)(129); 
  3.         System.out.println(b); 
  4.     } 

main方法里面有这么一段。
spa

你们都知道Java里面byte取值范围在-128~127之间,上面这段代码很显然已经超出byte范围,但不会报错。也能输出结果,结果为-128。为何会是这个结果呢?it

涉及到补码运算。过程是先将b,就是127转换成Int型的,而后加1,最后截掉高八位,剩下10000000,Byte是有符号的,因此这个值全部为取反在加1就是它的绝对值,因此这个数就是-128。class

欢迎讨论。方法

相关文章
相关标签/搜索