JAVA按位异或运算问题
inta;a=28^-8输出结果为:-28而a=-28^8输出结果为20,这是怎么回事啊?...
int a;
a=28^-8
输出结果为:-28
而
a=-28^8 输出结果为20,这是怎么回事啊? 展开
a=28^-8
输出结果为:-28
而
a=-28^8 输出结果为20,这是怎么回事啊? 展开
2个回答
展开全部
在计算机内部负数是用补码表示的,正数的原码与补码相同,下面以8位为例。
28=0001 1100;
(-8)原=1000 1000;
(-8)补=1111 1000;
28的原码与-8的补码异或得:1110 0100(此计算机结果为补码,原码为1001 1100,原码即为最终输出结果,转换为十进制即为-28);
-28=1001 1100;补码为1110 0100
8=0000 1000;
28与8异或后的结果为1110 1100(此结果为补码),原码为1001 0100,转换为十进制后的结果应为-20;
是不是你看错答案了 因为结果是-20,如果是28与8异或的话结果才是20.
28=0001 1100;
(-8)原=1000 1000;
(-8)补=1111 1000;
28的原码与-8的补码异或得:1110 0100(此计算机结果为补码,原码为1001 1100,原码即为最终输出结果,转换为十进制即为-28);
-28=1001 1100;补码为1110 0100
8=0000 1000;
28与8异或后的结果为1110 1100(此结果为补码),原码为1001 0100,转换为十进制后的结果应为-20;
是不是你看错答案了 因为结果是-20,如果是28与8异或的话结果才是20.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询