Debauchery Tea Party的品茶时间->如何用一个数表示一个班级通过考试的情况

复习位运算符时想到的比较有趣的一道题:
班上有30位同学,如何使用一个数,来表示一个班每个同学考试通过的情况,要能知道每位同学对应的通过情况(通过或者未通过)。
解答
通过或者未通过两种情况很容易想到二进制0和1,这时可以令1为通过,0为未通过,但是直接以一个二进制数来表示未免有点太简单。
显然全班的检测结果可以用一个无符号整数来表示:

unsigned long quiz1 = 0//全班成绩初始化为0。用UL,这样quiz1在任何机器上都拥有至少32位

例如,我们需要对27号学生进行对应的设置,以表示他通过测试,为达到这个目的,需要首先设置一个值,该值只有27位是1,其余位都是0:

1UL << 27;  //生成一个值,该值只有第二十七位为1

接下来进行位运算,将所得的值与quiz1进行位或运算,为了更新quiz1的值,使用一条复合赋值语句:

quiz1 |= 1UL << 27;  //表示学生27号通过测试

像这样,如果得到00010111110101110111011111011010110,转换成八进制就是027656737326,这样就可以表示全班的成绩了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值