Brian Kernighan 算法的最终目的是取出二进制状态中最右侧的 1

比如现在有一个二进制数:01101000,能否取出这个二进制数的最右侧的 1,即将数字变为 00001000
其算法步骤如下: 设这里有二进制数 num,现在先对 num 取反,再对 num+1 得到 nums,最后用 num 与上 nums 得到最后结果。其中先取反再+1 是二进制计算相反数的步骤,即最终结果是 num & (-num)

2025-04-02T12:51:02-fyumqfat.svg