利用位运算记录学生成绩是否及格
一个班30个学生,参加一次考试,成绩分为及格合不及格两种情况。我们可以使用如下代码来确定第27号同学是否及格。(想理解本代码,需要知道基本的整数在计算机中的二进制存储)
#include<iostream>
using namespace std;
unsigned long quiz = 0;//用unsigned long,至少32位,保证够用
//用quiz作为二进制集合,从低二位开始记录学生及不及格
void check(){
bool flag = quiz & (1UL << 27);//1左移i位表明是第i位同学从成绩情况
if(flag) cout<<"pass"<<endl;
else cout<<"fail"<<endl;
}
int main()
{
check();
quiz |= (1UL << 27);//或一下,对应的第27位同学及格
check();
quiz &= ~(1UL << 27);//与一下,对应的第27位同学不及格
check();
return 0;
}