日期:2014-05-20  浏览次数:20845 次

为什么10000000取反为01111111 符号位不是不变吗?
网上有一个哥们说(byte)128 输出为-28 原因是: 10000000 取反为01111111 我有点迷糊~~ 符号位不是不变吗?

到底是不是10000000 在计算机中只会当初-128

------解决方案--------------------
(byte)128已经越界了,byte的范围是-128-127,你输出要输出(byte)128的话数据就溢出了,自然输入-128了。计算中存的是补码,正数的原码,反码和补码相同,对于负数取补码,符号位是1,数值位是将原码按位取反再在最低位加1.