在二进制中,当一个数少了一个1时,其数值会发生变化,具体表现如下:
二进制表示变化 减去1会导致二进制数最右边的1变为0,同时该1后面的所有0变为1。例如:
- 原数:`1100`(十进制12)
- 减1后:`1011`(十进制11)
与运算验证
通过原数与减1后的数进行与运算,结果为0(二进制全0),验证了最右边的1确实被移除。例如:
`1100 & 1011 = 1000`(十进制8)
应用场景
该操作常用于计算二进制数中1的个数。例如:
- `x & (x - 1)` 可快速消除二进制数最右边的1,重复此操作直到x为0,统计操作次数即为1的个数
特殊情况
若原数全为1(如`1111`),减1后变为`1110`,最右边的1被移除,后续操作仍适用上述规律
总结:
二进制数减1会触发进位操作,最右边的1变为0并影响后续位,这一特性在位运算和统计1的个数中具有重要应用价值。