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
kingbo777的解答很详细,可是我怎么越看越糊涂啊,这跟我大学学的编码好像不同了啊。第一位是符号位,后面的是数值,11111111 11111111 11111111 11111111 不应该是负的2的31次方吗。怎么成-1了
展开
 我来答
百度网友458896cac
2007-08-28 · TA获得超过1684个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:134万
展开全部
首先你要知道现在我们用的多数都是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

看懂了吗?
suo_alex
2007-08-28 · TA获得超过283个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:0
展开全部
int 整数长度是 32, 你写全了32位取反看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式