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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 七了个七 中级黑马   /  2015-8-22 23:08  /  1243 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  ,byte的大小在-128~+的127,  130 超过其值得区间
  可以进行强制转换 byte b= byte 130 ,结果是-126?
130 不是已经超过byte的区间了么?强制转换后130 在byte中怎么表示?
这个怎么有点搞不懂为什么


9 个回复

倒序浏览
我也不太懂, 同问!!!!!!1
回复 使用道具 举报
因为130的二进制数数是10000010,超过了byte的范围,最高位为1,因此就成了一个负数;此时10000010就是补码,10000010的反码是10000001,他的原码就是11111110,11111110也就是-126
回复 使用道具 举报
殷俊 发表于 2015-8-22 23:34
因为130的二进制数数是10000010,超过了byte的范围,最高位为1,因此就成了一个负数;此时10000010就是补码 ...

为什么成补码了。。。 前面后面都看懂了,  谢谢大神啦
回复 使用道具 举报
再学习以下进制转换那一节吧
回复 使用道具 举报
不想睡 来自手机 中级黑马 2015-8-22 23:47:10
地板
额,总算看明白了
回复 使用道具 举报
殷俊 高级黑马 2015-8-22 23:48:01
7#
七了个七 发表于 2015-8-22 23:43
为什么成补码了。。。 前面后面都看懂了,  谢谢大神啦

因为数的运算都是用补码操作的,你对130进行强转操作,本来130是正数,正数的原码反码补码是一样的,变为负数,是补码在进行运算,成为负数后的数就是补码,如果要读,就要转换为原码,说白了一点就是,操作都是用补码进行操作的
回复 使用道具 举报
殷俊 发表于 2015-8-22 23:48
因为数的运算都是用补码操作的,你对130进行强转操作,本来130是正数,正数的原码反码补码是一样的,变为 ...

恩恩 谢谢这么详细的 ,明白啦
回复 使用道具 举报
开始数都是补码,添加字节啊,进行反码,源码得出来的
回复 使用道具 举报
从127开始每多1,127的二进制就进1,然后就是-126了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马