java中提取整数高低位及中间段需结合移位与按位与及掩码:低n位用x&((1(32-n))&((18)&0xf。

在 Java 中,用位运算符提取整数的高低位,核心是利用 移位(>>、) 和 按位与(&) 配合掩码(mask)来隔离目标比特段。
提取低 N 位
低 N 位就是二进制最右边的 N 位。只需用 & 和一个低 N 位全为 1 的掩码即可。
掩码可写成:(1 (例如 N=4 → <code>0b1111)。
int low4 = x & ((1 → 取低 4 位-
int low8 = x & 0xFF;→ 取低 8 位(常用简写)
提取高 N 位(以 32 位 int 为例)
高 N 位指最高 N 位,需先右移把它们移到最低位,再用掩码截取。
-
int high4 = (x >> 28) & 0xF;→ 取高 4 位(32 位中第 31~28 位) - 通用写法:
int highN = (x >> (32 - N)) & ((1
注意:对 int,高位移位使用算术右移(>>),符号位会扩展;若需逻辑右移(补 0),用 >>>,但提取高位时通常用 >> 更直观。
提取中间某一段(如第 8~11 位)
先右移把目标段对齐到低位,再用掩码保留所需位数。
- 要取第 8~11 位(共 4 位,从 0 开始编号),即第 8 位是最低目标位:
int bits8to11 = (x >> 8) & 0xF;- 更清晰写法:
int bits8to11 = (x >> 8) & ((1
注意事项
Java 中 int 是 32 位有符号整数,位运算基于补码。移位和掩码操作本身不关心符号,但右移 >> 会扩展符号位——如果原数为负,高位补的是 1,可能影响结果。若只关注比特模式(如处理协议字段、像素数据),建议统一用无符号右移 >>> 避免歧义。
对于 long,原理相同,掩码和移位数需对应 64 位(如低 8 位仍用 & 0xFF,但高 8 位是 (x >>> 56) & 0xFF)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











