第4章 表达式(C++ Primer 第五版)

利用位运算记录学生成绩是否及格

一个班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;
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/ccnuacmhdu/article/details/80974581
今日推荐