位运算模板
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)+" ");
运行结果
以上是关于位运算模板的主要内容,如果未能解决你的问题,请参考以下文章