~1(1的补码是多少)

diaobiyong 2008-07-24 11:32:45
System.out.println("~ 1\t\t"+(~1));打出是-2为什么?
...全文
7016 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
csnmhl 2010-03-01
  • 打赏
  • 举报
回复
引用 9 楼 authority123 的回复:
五楼,你别忽悠了哈!!!!!误人子弟!!!!
-1或者-128根本没有源码,所以求他们的补码只能按照补码的定义求,不能按照平时的方法(符号位不变,其余位取反加1)算。如果,你把-1或者-128(-2n次方)取反再加1,那是大大的错误,因为取反是取的源码的反,而-1或者-128根本没有源码,所以只能按照定义求。虽然结果都是一样的,但是思路大大的错误。
至于补码的定义,GO下,或者BAIDU下。

你说的自相矛盾!!!请问你补码的定义又是什么!建议你到维基百科看看
authority123 2009-11-26
  • 打赏
  • 举报
回复
五楼,你别忽悠了哈!!!!!误人子弟!!!!
-1或者-128根本没有源码,所以求他们的补码只能按照补码的定义求,不能按照平时的方法(符号位不变,其余位取反加1)算。如果,你把-1或者-128(-2n次方)取反再加1,那是大大的错误,因为取反是取的源码的反,而-1或者-128根本没有源码,所以只能按照定义求。虽然结果都是一样的,但是思路大大的错误。
至于补码的定义,GO下,或者BAIDU下。
hmsuccess 2008-07-24
  • 打赏
  • 举报
回复
至于负数的补码,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。
所以,-1的补码为:1111,1111
-128的补码为:1000,0000,【-128绝对值128(1000,0000)按位取反0111,1111加一=1000,0000】
hmsuccess 2008-07-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hmsuccess 的回复:]
1的补码是:
a,1 的二进制为:0000,0001
先求反码:0111,1110(除符号位外全部求反);
b,在上述基础上,加1为:0111,1111
所以1的0111,1111
[/Quote]
纠正,1的补码还是0000,0001,看错了
hmsuccess 2008-07-24
  • 打赏
  • 举报
回复
1的补码是:
a,1 的二进制为:0000,0001
先求反码:0111,1110(除符号位外全部求反);
b,在上述基础上,加1为:0111,1111
所以1的0111,1111
Jimdy_Shawn 2008-07-24
  • 打赏
  • 举报
回复 1
~1这个不是求补码的,只是取反而已
~1 11111110
它的补码是00000010
所以~1就职-2!
diaobiyong 2008-07-24
  • 打赏
  • 举报
回复
我说的是3楼,其他只是说了1的补码,没说为什~1打出来是-2的问题,6楼解释详细,明白了,谢谢
diaobiyong 2008-07-24
  • 打赏
  • 举报
回复
说对答案但解释不详细
wangshizhu79 2008-07-24
  • 打赏
  • 举报
回复
~ 是按位取反
1的二进制码
0000 0001
按位取反是
1111 1110
然后计算机存储此数
因为计算机存储存的是补码
而1111 1110
因为最高位是1
所以被按作负数求补
即符号位不变 其他位求反再加1
111 1110取反
000 0001加1
000 0010
再加上符号位就是
1000 0010
就是-2

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧