JAVA中“~”按位取反运算符的一些问题。
小弟初学JAVA,今天卡在“~”这个符号上了,按照书上说的是按位取反。这个定义到底是什么呢?比如5,101,加上符号位,0101.按位取反后应该是1010,答案应该是-2...
小弟初学JAVA,今天卡在“~”这个符号上了,按照书上说的是按位取反。这个定义到底是什么呢?比如5,101,加上符号位,0101.按位取反后应该是1010,答案应该是-2呀。可是,当我运行的时候,输出结果为什么是-6呢?程序如下,请各位老师赐教。。 public class BitOperation { public static void main(String args[]){ int a=5; System.out.println("~a="+(~a)); } } 运算结果是-6,我用的Eclipse
展开
展开全部
首先你要知道现在我们用的多数都是32位机,所以整形数都是4个字节
那么再看看按位取反的结果:
00000000
00000000
00000000
00000101
这是5
00000000
00000000
00000000
00000000
这是0
11111111
11111111
11111111
11111111
这是-1
11111111
11111111
11111111
11111110
这是-2
11111111
11111111
11111111
11111101
这是-3
11111111
11111111
11111111
11111100
这是-4
11111111
11111111
11111111
11111011
这是-5
11111111
11111111
11111111
11111010
这是5取反的结果-6
看懂了吗?
那么再看看按位取反的结果:
00000000
00000000
00000000
00000101
这是5
00000000
00000000
00000000
00000000
这是0
11111111
11111111
11111111
11111111
这是-1
11111111
11111111
11111111
11111110
这是-2
11111111
11111111
11111111
11111101
这是-3
11111111
11111111
11111111
11111100
这是-4
11111111
11111111
11111111
11111011
这是-5
11111111
11111111
11111111
11111010
这是5取反的结果-6
看懂了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询