其他分享
首页 > 其他分享> > 20211021-integer取最高最低位

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