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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Fran~~

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

130 强转到byte 后,截取最后一个字节8位,1000 0010  , 为什么要取补码1111 1110 ,用补码来表示真实的值,而不是直接用原码,直接得到 -2 呢!  
若是 5-6 =?  我们肯定是  先分别找出 5 和 6 的补码,计算之后 得到 0111 1111 ,进一步转回原码 1000 0001得到 -1 的 值,这里用的是原码表示最后的值,而上面强转为什么不一样呢?

5 个回复

倒序浏览
说说我的理解:计算机底层运算都是补码运算的,所有运算都是在补码间进行的,计算完再转回原码输出结果
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
qq2519157 发表于 2016-9-26 16:34
说说我的理解:计算机底层运算都是补码运算的,所有运算都是在补码间进行的,计算完再转回原码输出结果
...

嗯嗯~~对的,常规就是那样,最后输出的结果是原码,就是通过原码读出结果,,但是,强转不是哎~~很奇怪,用补码读出 -126  ,用原码读出的是 -2
回复 使用道具 举报
Fran~~ 发表于 2016-9-26 17:15
嗯嗯~~对的,常规就是那样,最后输出的结果是原码,就是通过原码读出结果,,但是,强转不是哎~~很奇怪, ...

原码读出的就是-126啊
130二进制为10000010
它的补码为100000010(前面的24个0省略不写,太多了)
强转后去掉0为10000010这是一个结果的补码,首位是符号位,将其转换为反码是10000001然后取反得到原码11111110   即-126
我也是初学者,如有错误麻烦指出。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
qq2519157 发表于 2016-9-26 18:28
原码读出的就是-126啊
130二进制为10000010
它的补码为100000010(前面的24个0省略不写,太多了)

思路如此清晰~~厉害~~是我搞乱了~~渣渣入门~~
你学到第几天了~~是什么方向呢~
回复 使用道具 举报
Fran~~ 发表于 2016-9-26 19:45
思路如此清晰~~厉害~~是我搞乱了~~渣渣入门~~
你学到第几天了~~是什么方向呢~
...

学了一个星期吧,安卓方向的,像二进制这些东西不是重点,了解一下就行了。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马