日期:2014-05-20  浏览次数:20650 次

最小的数据存储空间问题
今天遇到一个题目,某班级一共有30个学生,编号从1-30,今天3,5,8,10,20,25,27几个人没有来上课
请用最小的数据存储空间来记录当前的实际上课量的信息(不包括老师)
我就是不知道这个所谓的最小的数据存储空间是什么,方便的话把这个程序实现也写一下吧。

------解决方案--------------------
int student=0x1af7fd6b;//1,1010,1111,0111,1111,1101,0110,1011
for(int i=1;student!=0;student> > > =1,i++)
if((student & 0x1)==0) System.out.println(i+ " 没有上课 ");

------解决方案--------------------
用一个int就够了。
code:
===
int studentHasClass = Integer.MAX_VALUE; //所有的人都来上课了;用-1也可以
//i没有来
studentHasClass &= ~(1 < <i);
//i是否来了
if((studentHasClass & (1 < <i)) > 0)
System.out.println(i + "来了 ");
else System.out.println(i + "没来 ");
------解决方案--------------------
int studentHasClass = Integer.MAX_VALUE; //所有的人都来上课了;用-1也可以
//i没有来--------------------是设置成i没有来
studentHasClass &= ~(1 < <i);
//i来了:设置成i来了
studentHasClass |= (1 < <i);
//i是否来了
if((studentHasClass & (1 < <i)) > 0)
System.out.println(i + "来了 ");
else System.out.println(i + "没来 ");