农夫过河问题(一个小细节)
农夫过河问题判断农夫和被移动物体是否在同侧的语句是if((0!=(location&0x08)==(0!=(loctation&movers[i])))location是...
农夫过河问题判断农夫和被移动物体是否在同侧的语句是if((0!=(location&0x08)==(0!=(loctation&movers[i])))
location是当前位置用四位二进制数表示,第一位是农夫,movers是四种移动方式:1000,1010,1001,1100 。
如果农夫的位置是1那么和哪一个mover做“&”运算结果都不等于零,上面的判断语句都成立,可是这其中一定是有农夫和被移动物体不在同侧的情况的,那这个语句就有问题了。
可是看了好几本书都是这么写的,应该不是程序写错了,求问我哪里想错了呢?
求指教O(∩_∩)O谢谢 展开
location是当前位置用四位二进制数表示,第一位是农夫,movers是四种移动方式:1000,1010,1001,1100 。
如果农夫的位置是1那么和哪一个mover做“&”运算结果都不等于零,上面的判断语句都成立,可是这其中一定是有农夫和被移动物体不在同侧的情况的,那这个语句就有问题了。
可是看了好几本书都是这么写的,应该不是程序写错了,求问我哪里想错了呢?
求指教O(∩_∩)O谢谢 展开
展开全部
如果location是1的话,只有和1001&才为真,其他都为假,因为其他数的个位都是0
追问
先谢过了~
可是……我可能说的不清楚,我说的农夫位置是1,是指location最高位是1,比如说1000,1010,
1011等等。这样和movers求“&”就总是不等于零,那么那个语句就总是为真了,但是里面一定有不符合条件的情况,比如location是1110时,mover中只有1010符合农夫和要移动的物品在同一侧。我不知道我哪里理解错了,求指教……
追答
照你这样说是有问题的。movers的最高位的1应该去掉
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询