You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中&运算符的用途解析:以吃豆人教程代码为例

位运算符&在Pacman代码中的作用解释

这里的&不是你熟悉的逻辑运算符,而是按位与运算符,和&&(短路逻辑与)是完全不同的两种操作,别搞混了。下面拆解代码里的两处&:

  • ch & 16的作用:
    16的二进制是10000,按位与操作会逐位对比ch和16的二进制位:只有当对应位都为1时,结果的该位才是1,否则为0。这里用它来检查ch的第5位(从0开始计数)是否为1——如果结果不等于0,就说明该位是1,触发if分支的逻辑。
    举个例子:如果ch=24(二进制11000),24&16=16≠0,满足条件;如果ch=8(二进制01000),8&16=0,不满足条件。

  • ch & 15的作用:
    15的二进制是01111,按位与操作会把ch的高位全部清零,只保留低4位的数值。这相当于对ch取模16(当ch为非负数时),但位运算的执行效率比模运算更高,这在早期游戏(比如Pacman)的性能优化中很常见。
    举个例子:如果ch=24(二进制11000),24&15=8;如果ch=31(二进制11111),31&15=15。

至于为什么不用&&?因为这里根本不是布尔值的逻辑判断场景,&&是用来连接两个布尔表达式的,而这里是对整数的二进制位进行操作,&&完全不适用。

内容的提问来源于stack exchange,提问作者Smile D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 10:52:08