一些位运算的技巧 具体步骤都写在注释里面啦,有问题欢迎留言 只有注释没有代码的可以看看我的其他文章~ public class SmallTechniques { public static void main(String[] args) { int number=25; int count=0; System.out.println(number+"的二进制形式为:"+Integer.toBinaryString(number)); //求一个数的二进制数形式有多少位 while(Math.pow(2, count)<=Math.abs(number)) count++; System.out.println("有"+count+"位"); //求一个二进制数的第K位是0还是1 int k=3; int n=(number>>(k-1))&1; System.out.println("第"+k+"位是"+n); //去重:连续异或 //求唯一成对:给成对的那个数再配一个本身,整体做异或 //判断一个整数是不是2的整数次方 //如果是二的整数次方,那么二进制数中有且仅有一个1 //问题就变为判断二进制数中是否只有一个1 if(((number-1)&number)==0) System.out.println("是2的整数次方"); else System.out.println("不是2的整数次方"); //用位运算,求一个数的绝对值 number=-1*number;//将开始定义的number变为负数 System.out.print(number+"绝对值为:"); number=number*(1-((number>>>31)<<1)); System.out.println(number); //判断一个数的奇偶,偶数的二进制最低位为0 if(((number>>0)&1)==0) System.out.println(number+"是偶数"); else System.out.println(number+"是奇数"); //奇偶互调 /* * 思路: * 1)获得二进制数的所有奇数位(屏蔽掉偶数位) * 2)获得二进制数的所有偶数位(屏蔽掉奇数位) * 3)左移,右移后进行异或运算 * * */ } }