位运算模板

Posted 猪八戒1.0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算模板相关的知识,希望对你有一定的参考价值。

目录

公式 

题目

做法一

 做法二

运行结果

公式

代码

运行结果  


公式 

x&-x 返回二进制最后面的1 比如1010100 操作后变为100

题目

求二进制中1的个数

做法一

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class 二进制1的个数 
	static int res=0;
	public static void main(String[] args) throws IOException 
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s=br.readLine();
		int n=Integer.parseInt(s);
		String[] s1=br.readLine().split(" ");
		for(int i=0;i<n;i++) 
			int x=Integer.parseInt(s1[i]);
			while(x>0) 
				res++;
				x-=lowbit(x);
			
			System.out.print(res+" ");
			res=0;
		
		
	
	public static int lowbit(int x) 
		return x&-x;
	

 做法二

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class 二进制1的个数2 
	static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	public static void main(String[] args) throws IOException 
		int n= Integer.parseInt(br.readLine());
		String [] s=br.readLine().split(" ");
		for(int i=0;i<n;i++) 
			int res=Integer.bitCount(Integer.parseInt(s[i]));
			System.out.print(res+" ");
		
	

运行结果

公式

求n的二进制第k位数字: n >> k & 1

代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class 二进制的第k位是几 
	static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	public static void main(String[] args) throws IOException 
		int n=Integer.parseInt(br.readLine());
		//比如n=10   1010
		for(int k=31;k>=0;k--) 
			System.out.print((n>>k&1)+" ");
		
	

运行结果 

 

以上是关于位运算模板的主要内容,如果未能解决你的问题,请参考以下文章

位运算模板

POJ-1222EXTENDED LIGHTS OUT-位运算枚举模板

快速幂基本模板

位运算

大整数运算模板总结

模板 高精度运算