有苦有乐的算法 --- 一个int类型的数,换成二进制后,提取最右侧的1所在位置

问题

一个int类型的数,换成二进制后,提取最右侧的1所在位置
3 = 00000011 ==> 00000001 = 1
4 = 00000100 ==> 00000100 = 4

解析

在这里插入图片描述
如图所示:
N&(~N+1)就得到了所需要的数
~N+1=-N所N&-N即为结果

代码

public static int bit1counts(int N) {
    int rightOne = N & (-N);
    return rightOne ;		
}
posted @ 2022-03-07 18:03  叕叕666  阅读(39)  评论(0)    收藏  举报