问一个超级基础的运算符问题.

dwbkeeper 2006-10-23 09:22:54
这是一个人人都会的问题,但就我不太会.今天听老师讲了半天,却还是有点一知半解的.
问题是这样的:
"~"这个符号表示的是将一个数进行按位取反.

老师说是先变成二进制数,然后取反后再加上1,随后再计算出十进制数来.
但是算的时候,老师又说取反后是副的二进制数要重新取反再加上才能算出来.就这地方我就有点不太明白了.
当时我们的例子是这样的.
~8
输出结果是-9
先得出8的二进制数1000,
然后取反,得到0111,
但是如果是负数的话就应该直接计算了.可是老师却在这个时候再将将0111取反,随后又加上1,然后得出1001,这个数的值就是-9了.
我想问一下,为什么当二进制数是负数表示的时候就一定要重新取反再加上进行运算才能够得到十进制数来.
希望有明白的兄弟帮帮忙.详细的说明一下个中原由.
还有许多运算符,什么取或取异或的也都糊涂了些.不过相比之下,这个是最不明白的了.
...全文
185 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dashi 2006-10-24
  • 打赏
  • 举报
回复
接分~谢谢~~~

23,407

社区成员

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

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