Java中如何通过while循环与位运算逐位检查整型变量的二进制表示?
- 内容介绍
- 文章标签
- 相关推荐
本文共计732个文字,预计阅读时间需要3分钟。
逐位扫描表示整型变量的二进制表示,本质是依次数检查从最低位(bit 0)到最高位(bit 31)每一位是否为+1。Java中不直接支持获取某一特定位的值,但可以通过按位与(&)和按位异或(^)操作实现。
方法一:右移 + 检查最低位(推荐)
每次将数字右移一位,再用 n & 1 判断当前最低位是否为 1。该方式逻辑清晰、不易越界,且能自然处理负数(按补码扫描)。
示例代码:
int n = 13; // 二进制: 1101 int i = 0; while (n != 0) { int bit = n & 1; // 获取当前最低位 System.out.println("第 " + i + " 位: " + bit); n = n >>> 1; // 无符号右移 1 位(对负数也安全) i++; }
说明:
立即学习“Java免费学习笔记(深入)”;
- 使用
>>>(无符号右移)避免负数因符号位扩展导致死循环 - 循环条件
n != 0可自动停止——当所有有效位被移出后,n 变为 0 - 若需固定扫描 32 位(包括前导零),可改用
i 作条件
方法二:左移掩码 + 按位与(适合指定位置)
保持原数不变,用一个掩码(如 1 )逐位左移,再与原数做 <code>& 运算判断对应位。
本文共计732个文字,预计阅读时间需要3分钟。
逐位扫描表示整型变量的二进制表示,本质是依次数检查从最低位(bit 0)到最高位(bit 31)每一位是否为+1。Java中不直接支持获取某一特定位的值,但可以通过按位与(&)和按位异或(^)操作实现。
方法一:右移 + 检查最低位(推荐)
每次将数字右移一位,再用 n & 1 判断当前最低位是否为 1。该方式逻辑清晰、不易越界,且能自然处理负数(按补码扫描)。
示例代码:
int n = 13; // 二进制: 1101 int i = 0; while (n != 0) { int bit = n & 1; // 获取当前最低位 System.out.println("第 " + i + " 位: " + bit); n = n >>> 1; // 无符号右移 1 位(对负数也安全) i++; }
说明:
立即学习“Java免费学习笔记(深入)”;
- 使用
>>>(无符号右移)避免负数因符号位扩展导致死循环 - 循环条件
n != 0可自动停止——当所有有效位被移出后,n 变为 0 - 若需固定扫描 32 位(包括前导零),可改用
i 作条件
方法二:左移掩码 + 按位与(适合指定位置)
保持原数不变,用一个掩码(如 1 )逐位左移,再与原数做 <code>& 运算判断对应位。

