黑马程序员技术交流社区
标题:
一个负二进制的转换,求解?
[打印本页]
作者:
黑黑黑马
时间:
2014-3-11 22:14
标题:
一个负二进制的转换,求解?
本帖最后由 黑黑黑马 于 2014-3-11 23:08 编辑
byte b=3;
b=(byte)(b+200);
System.out.print(b);
把int与byte想加的结果强制赋给byte 本来是0000 0000 0000 0000 0000 0001 1001 0011 砍断前面的后是1001 0011 可是最后转换为负数后是-53 这个中间过程就不懂了。。。
作者:
榨菜
时间:
2014-3-11 22:27
(b+200)先把b提升为int类型,然后得到203int类型,再把int类型转换成byte类型。 203的二进制是1100 1011 然后要存到字节里面去,那么第8位为1就是符号位,所以是负数。 1100 1011取反后是00110100,再加1,就是0011 0101-->53. 在加上前面负号。 就等于-53
作者:
黑黑黑马
时间:
2014-3-11 23:08
榨菜 发表于 2014-3-11 22:27
(b+200)先把b提升为int类型,然后得到203int类型,再把int类型转换成byte类型。 203的二进制是1100 1011 ...
懂了,转二进制时候转错了。我怎么说结果不对,谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2