A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个-128我一直理解不了

2 个回复

正序浏览
首先java规定了byte类型的数据为1个字节(8位二进制0000_0000——1111_1111),换算成十进制就是-128——127之间。具体算法楼上已给出,你要懂“原反补”。
回复 使用道具 举报
计算机中数值用补码来表示的
正数的补码为原码
负数的补码为反码+1

+7的原码补码都是:0000 0111
-7的原码为:1000 0111       
    反码为:1111 1000
    补码为:1111 1001                       
                       
因此0000 0000-0111 1111 表示为+0- +127
               
1000 0001 - 1111 1111 表示-1 - -127

当原码为1000 0000时
取反码:1111 1111
取补码:1 0000 0000
但是byte仅识别8位字节,并且符号不能变,所以补码是1000 0000
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马