一道笔试题...关于按位取补的

YuZhejie 2008-10-23 08:37:58

//请教一个笔试题,:
public static void main(String[] args) {
// TODO Auto-generated method stub
int i= 0xFFFFFFFA;
int j=~i;
System.out.println(i);
System.out.println(j);
}
/*结果为什么是:
-6
5
为什么*/

...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
YuZhejie 2008-10-24
  • 打赏
  • 举报
回复
呵呵...之前认为 ~是取补..所以很不理解...

当然。。我是该复习下计算机原理方面的知识了。。

谢过。。

ZangXT 2008-10-24
  • 打赏
  • 举报
回复
该学点计算机原理的基础知识了。
YuZhejie 2008-10-24
  • 打赏
  • 举报
回复
经javaeye高手指点,我明白了。。

负数在电脑中用补码表示,计算出0xFFFFFFFA的补码为:

1000 0000 0000 0000 0000 0000 0000 0101 再+1就等于
1000 0000 0000 0000 0000 0000 0000 0110

第一个1表示负数,后面0110就是6 ,那么结果就是-6

int j=~i;

~ 符号表示取反
i=1111 1111 1111 1111 1111 1111 1111 1010 ,取反则为
j=0000 0000 0000 0000 0000 0000 0000 0101 就等于5了。



ZangXT 2008-10-23
  • 打赏
  • 举报
回复
这哪有为什么。
自己把对应的二进制位画出来看看就是了。
0xFFFFFFFA 是1111 1111 1111 1111 1111 1111 1111 1010
按位取反 0000 0000 0000 0000 0000 0000 0000 0101

理解补码表示的原理即可。
YuZhejie 2008-10-23
  • 打赏
  • 举报
回复
顶起。。。。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧