java实现 位运算常见模板

一些位运算的技巧

具体步骤都写在注释里面啦,有问题欢迎留言

只有注释没有代码的可以看看我的其他文章~

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)左移,右移后进行异或运算
		 * 
		 * */
		
	}
}
发布了24 篇原创文章 · 获赞 10 · 访问量 1302

猜你喜欢

转载自blog.csdn.net/qq_41625102/article/details/104399239