如何辨别不同事物的特点?
- 内容介绍
- 相关推荐
本文共计503个文字,预计阅读时间需要3分钟。
直接使用+n<100字,结果:
为什么 & 1 能判断奇偶
任意整数的二进制表示中,最低位(2⁰ 位)决定奇偶:
- 最低位是 1 → 整体 = 偶数部分 + 1 → 奇数(如 7 的二进制是 111,末位 1)
- 最低位是 0 → 整体全是 2 的倍数之和 → 偶数(如 8 的二进制是 1000,末位 0)
- 而数字 1 的二进制只有末位是 1,其余全为 0(如 32 位下是 ...0001)
- 所以 n & 1 实际只保留 n 的最低位,其他位全被“与”成 0
& 和 %2 的区别不只是写法
两者逻辑等价但底层机制不同:
- %2 是取余运算,依赖除法指令,涉及商、余数计算,开销略大
- &1 是纯位操作,CPU 通常一条指令完成,无分支、无除法,更快更轻量
- 对正数两者结果一致;对负数,多数语言(如 Java、C/C++)中 n & 1 仍可靠,因为补码表示下负奇数的最低位仍是 1(如 -3 的补码末位为 1)
实际使用时的注意事项
写法简洁,但需注意语境和可读性:
- 在条件判断中可直接写
if (n & 1)—— 非零即真,等价于奇数 - 避免写成
if ((n & 1) == true),布尔比较多余且易出错(true 在 C/Java 中不等于 1) - 若代码强调可读性或面向初学者,%2 更直观;性能敏感场景(如嵌入式、高频循环)优先 &1
- 不要混淆 &(位与)和 &&(逻辑与)——后者不支持位运算,且有短路特性
本文共计503个文字,预计阅读时间需要3分钟。
直接使用+n<100字,结果:
为什么 & 1 能判断奇偶
任意整数的二进制表示中,最低位(2⁰ 位)决定奇偶:
- 最低位是 1 → 整体 = 偶数部分 + 1 → 奇数(如 7 的二进制是 111,末位 1)
- 最低位是 0 → 整体全是 2 的倍数之和 → 偶数(如 8 的二进制是 1000,末位 0)
- 而数字 1 的二进制只有末位是 1,其余全为 0(如 32 位下是 ...0001)
- 所以 n & 1 实际只保留 n 的最低位,其他位全被“与”成 0
& 和 %2 的区别不只是写法
两者逻辑等价但底层机制不同:
- %2 是取余运算,依赖除法指令,涉及商、余数计算,开销略大
- &1 是纯位操作,CPU 通常一条指令完成,无分支、无除法,更快更轻量
- 对正数两者结果一致;对负数,多数语言(如 Java、C/C++)中 n & 1 仍可靠,因为补码表示下负奇数的最低位仍是 1(如 -3 的补码末位为 1)
实际使用时的注意事项
写法简洁,但需注意语境和可读性:
- 在条件判断中可直接写
if (n & 1)—— 非零即真,等价于奇数 - 避免写成
if ((n & 1) == true),布尔比较多余且易出错(true 在 C/Java 中不等于 1) - 若代码强调可读性或面向初学者,%2 更直观;性能敏感场景(如嵌入式、高频循环)优先 &1
- 不要混淆 &(位与)和 &&(逻辑与)——后者不支持位运算,且有短路特性

