按位取反运算的问题

//位运算publicclasstest{publicstaticvoidmain(Stringargs[]){inta;a=36;System.out.println(... //位运算
public class test
{
public static void main(String args[])
{
int a;
a=36;

System.out.println("a="+a);
System.out.println("~a="+(~a));

}
}
如果按位取反运算是对数据的每个二进制位取反,那么~a为什为什么不是27而是-37?
展开
 我来答
忘至白葬不情必0T
2006-06-12 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
int型的36对应二进制是00000000 00000000 00000000 00100100,取反后是11111111 11111111 11111111 11011011,这是一个整型负数的补码,按“减1取反”的方法得到其绝对值是00000000 00000000 00000000 00100101,即十进制的37,所以该负数为-37
dixnuits
2006-06-12 · TA获得超过1375个赞
知道小有建树答主
回答量:1560
采纳率:0%
帮助的人:1352万
展开全部
0100100取反为1011011

其中 最高位为符号位.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式