1.为什么3取反得到的是-4, 我在草稿纸上的演算, 对3取反之后的二进制数再取反加一,才得到-4,这不是补码的运算过程吗?
2.第二个的程序异常真不知道为啥.
【1】有符号数,3=【0000 0011】,取反~3=【1111 1100】=-4,,,
负数的话二进制转10进制就是取反加1,,加负号。**~0,等于-1**
【2】第二个程序,,很神奇,,注释都能出错,,还给精确爆出错误位置,,编译器该换了。把这个括号换一下,,试试
1.你的答案错了
你这样看更直观:
System.out.println(Integer.toBinaryString(~3));
我的eclipse运行的结果:11111111111111111111111111111100
所以正数是直接按位取反,得到-4
2.大哥啊,这个是编译器的问题把,我的eclipse不报错。。。尴尬