20211021-integer取最高最低位
作者:互联网
public static int highestOneBit(int i) {// 对于其1最高位n,便于理解咱们从左到右为顺序递增
// HD, Figure 3-1
i |= (i >> 1);// n 到 n+1 都是 1(n开始2位)
i |= (i >> 2);// n 到 n+3(n开始4位)
i |= (i >> 4);// n n+7(n开始8位)
i |= (i >> 8);// n n+15(n开始16位)
i |= (i >> 16);// n n+31(n开始32位)
return i - (i >>> 1);// 只保留最高位
}
public static int lowestOneBit(int i) {
// HD, Section 2-1
return i & -i;// i&(i的反码)=0,只需证明 i的反码+1 后一直加到i的最低位即可:应该不难理解,一直+1,如果之前是0那么就往前+1,遇到0则表明之前就是1.
}
i & (i-1)// 为减去最低位1后的i
标签:反码,16,int,20211021,最低,return,static,integer,HD 来源: https://www.cnblogs.com/zpq5935/p/16298968.html