判断一个数是否是2的整数次幂

mac2024-04-16  35

/** * <p>Title: isCompletePower</p> * <p>Description: 判断一个数是否是2的整数次幂 * 判断原理: * 2的整数次幂,都是以1开头,其余其余位为0的形式 * 例如:8的二进制形式为:1 0 0 0 * 这样的一个数进行-1后,所得数的各位都会和原数的各位成反码 * 例如:7的二进制形式位:0 1 1 1 * 所以将8和7进行按位与运算,所得结果为0(按位与都是1才会得1) * * 注: * 此方法会将0和1也算作2的整数次幂,调用此方法时需要注意 * </p> * @param num * @return */ public static boolean isCompletePower(int num){ int bitAnd = num & (num - 1); return bitAnd == 0; }

运行0-99:

0: true 1: true 2: true 3: false 4: true 5: false 6: false 7: false 8: true 9: false 10: false 11: false 12: false 13: false 14: false 15: false 16: true 17: false 18: false 19: false 20: false 21: false 22: false 23: false 24: false 25: false 26: false 27: false 28: false 29: false 30: false 31: false 32: true 33: false 34: false 35: false 36: false 37: false 38: false 39: false 40: false 41: false 42: false 43: false 44: false 45: false 46: false 47: false 48: false 49: false 50: false 51: false 52: false 53: false 54: false 55: false 56: false 57: false 58: false 59: false 60: false 61: false 62: false 63: false 64: true 65: false 66: false 67: false 68: false 69: false 70: false 71: false 72: false 73: false 74: false 75: false 76: false 77: false 78: false 79: false 80: false 81: false 82: false 83: false 84: false 85: false 86: false 87: false 88: false 89: false 90: false 91: false 92: false 93: false 94: false 95: false 96: false 97: false 98: false 99: false

参考

https://blog.csdn.net/Future_LL/article/details/90754376

最新回复(0)