为什么(byte)128等于-128 财富值29

2016-10-14 11:15发布

    System.out.println((byte) 128);//-128 
3条回答
acer - 这个人很懒,什么都没留下
1楼 · 2016-10-14 11:41.采纳回答

tip:java在做字节操作的时候应为会发生自动的类型转换,又不支持无符号整数,要特别注意,通常需要使用与操作屏蔽掉自动扩展导致的错误的bit

段曼 - 我很好
2楼-- · 2016-10-14 11:52

是因为java的自动转型导致的,原理如下:
1、 128为int整数32位,前24为全部为0 后8位是1000 0000
2、(byte)128 转型为byte后首位是1,java认为是负数的补码标识
4、所以输出的为-128

byte的取值范围是-128~127, 128溢出了

一周热门 更多>