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)左移,右移后进行异或运算
		 * 
		 * */
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值