按位或与按位异或的问题

fengjingloveyanshz13 2008-06-05 03:55:26
023 | 035 结果为037。 为什么是037
013^035结果为026。为什么结果是026
这句是如何算的((y=1)==0)&((x=6)==6),位运算后是6,为什么y=1之后等于0,到底得到哪个数,有谁可以说的明白些吗?谢谢各位了

...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用楼主 fengjingloveyanshz13 的帖子:]
这句是如何算的((y=1)==0)&((x=6)==6),位运算后是6,为什么y=1之后等于0,到底得到哪个数,有谁可以说的明白些吗?谢谢各位了
[/Quote]

((y = 1) == 0) & ((x = 6) == 6)

((y = 1) == 0)
表示先将 y 赋值为 1,再将 y 的值与 0 进行比较,即 1 == 0,这个结果是可想而知的,是 false

((x = 6) == 6)
运算方式同上,结果为 true

false & true
注意了,两边是布尔类型了,这时 & 就不是位与运算符了,而是布尔与(也称为布尔逻辑与)运算符了,这个运算符的运算结果与逻辑与(&&)的运算结果一致,即表示:false && true,这个得出的结果是 false

因此 ((y = 1) == 0) & ((x = 6) == 6) 表达式运算出来的值是 false

PS:布尔逻辑与逻辑与的区别不是很大,详见:
http://topic.csdn.net/u/20080514/14/dd017262-69e6-4065-b457-7a545785a063.html
第 173 楼的回复
gilibao 2008-06-05
  • 打赏
  • 举报
回复
013^035结果为026

====================

001 011 (013)
011 101 (035)
---------------------
010 110 = (026)
gilibao 2008-06-05
  • 打赏
  • 举报
回复
001 010 = (013)
011 100 = (035)
---------------------
010 110 = (026)
gilibao 2008-06-05
  • 打赏
  • 举报
回复
000 010 011
000 011 100
---------------------
000 011 111 = (037)
gilibao 2008-06-05
  • 打赏
  • 举报
回复
000 010 011
000 011 100
----------------
000 011 111 = (037)

13,100

社区成员

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

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