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