目录
一:&运算的介绍
二:&运算的一些用法?
? ? ? ? 1:求出除以2的余数:
? ? ? ? 2:求出一个数的二进制中有几个“1”
一:&运算的介绍
? ? ? ? &是一种位运算,如3&5的结果为1:
????????
?????????运行原理如下:首先把5和3用二进制表示? ? ? ? ? ? ? ? ? ? ? ? ? ? 101
? ? ? ? ?数位不够就用0来填补? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 011
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&--------------
? ? ? ? ?最后每一位都进行一次运算(都为1即为1,否则为0)? ? ? ? ?001
? ? ? ? 解释:先看第一位 1和0因为0不成立,所以写0,第二位 0和1也是因为0不成立,所以写0,第三位1和1都成立,所以写1,最后就成了(001)2=(1)10。
二:&运算的一些用法?
? ? ? ? 1:求出除以2的余数:
#include <bits/stdc++.h>
using namespace std;
void h(int n){
n=n&1;
if(n==1){
cout<<"奇数\n";
}
else{
cout<<"偶数\n";
}
return;
}
int main(){
int n;
while(cin>>n){
h(n);
}
return 0;
}
? ? ? ? 用位运算来求除以二的余数会比%快一点,所以建议用位运算。
? ? ? ? 2:求出一个数的二进制中有几个“1”
#include <bits/stdc++.h>
using namespace std;
void h(int n){
int tot=0,t=n;
while(n){
n=n&(n-1);
tot++;
}
cout<<t<<"的二进制中共有"<<tot<<"个一\n";
return;
}
int main(){
int n;
while(cin>>n){
h(n);
}
return 0;
}
????????原理我也不是很懂,也是结合老师上课讲的编写出来的,所以没有写注释……
|