题目来源 leetcode 题目描述 题目解析 理论 public static int findComplement(int num) { return (~num) & (Integer.highestOneBit(num)-1); } 例子:100011 Integer.highestOneBit(num): 保留最高位的1,地位变成0: 100000 -1在二进制中的操作是:从右边开始数,找到第一个1,然后将它转为0,地位的0变成1:011111 对数取反得到: 011100 011100 & 011111 = 011100