Java教程

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
这篇关于20211021-integer取最高最低位的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!