判断二进制第n位是否为1,用x & (1

用位运算符判断某个二进制位是否为 1,核心是使用 按位与(&) 配合一个只在目标位置为 1 的掩码(mask)。
用 & 和左移掩码判断第 n 位(从 0 开始计数)
要检查整数 x 的第 n 位(最低位是第 0 位),可写成:(x & (1
1 生成一个只有第 <code>n位是 1 的数(例如n=3→1000₂ = 8)x & (1 会清零其他所有位,只保留第 <code>n位的值(结果要么是0,要么是1 )- 只要结果不等于 0,就说明该位是 1
常见写法示例
判断 int 值 num = 13(二进制 1101)的第 2 位(即从右往左第 3 位,0-indexed):
int num = 13; // 1101 boolean isBit2Set = (num & (1 <p>结果为 <strong>true</strong>,因为 <code>1101</code> 的第 2 位确实是 1。</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill3430" title="Alibabacloud Sdk Client Initialization For Java"><img src="https://img.php.cn/upload/skill/000/000/081/178955835420587.jpg" alt="Alibabacloud Sdk Client Initialization For Java" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill3430" title="Alibabacloud Sdk Client Initialization For Java" class="overflowclass">Alibabacloud Sdk Client Initialization For Java</a> <p class="overflowclass">在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。</p> </div> <a rel="nofollow" href="/xiazai/skill3430" title="Alibabacloud Sdk Client Initialization For Java" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <h3>注意符号位和数据类型边界</h3> <p>对负数或高位操作时需留意:</p>
- Java 中
int是 32 位,n范围应为0 ~ 31;超出会因左移溢出导致意外结果 - 使用
long时掩码要用1L ,避免默认 <code>int左移后截断 - 若只关心逻辑值(是/否),用
!= 0比较比用== (1 更安全,因后者在 <code>n ≥ 31时可能因符号扩展失效
封装成工具方法更清晰
可写一个通用方法提高可读性:
public static boolean isBitSet(int value, int bitIndex) {
return (value & (1
<p>调用 <code>isBitSet(13, 2)</code> 返回 <strong>true</strong>,语义明确,不易出错。</p>Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










