二进制的一道题

某中学的高一年级有5个班,每个班最多有40位学生,给高一年级学生进行编码,形式为英文字符S加若干位二进制数.要求用二进制数分别表示班级编码和学生编码,并尽可能减少编码长度... 某中学的高一年级有5个班,每个班最多有40位学生,给高一年级学生进行编码,形式为英文字符S加若干位二进制数.要求用二进制数分别表示班级编码和学生编码,并尽可能减少编码长度.请问以下分配方案中正确的是( )
A.用2位二进制数记录班级编码,5位二进制数记录学生编码
B.用3位二进制数记录班级编码,5位二进制数记录学生编码
C.用3位二进制数记录班级编码,6位二进制数记录学生编码
D.用4位二进制数记录班级编码,5位二进制数记录学生编码
展开
 我来答
匿名用户
2011-06-29
展开全部
C.用3位二进制数记录班级编码,6位二进制数记录学生编码

5个班级要用3位二进制编码,共有8种表现方式(2位二进制编码有4种表现方式)
40个学生要用6位二进制编码,共有64种表现方式(5位二进制编码有32种表现方式)

N 位二进制编码的表现方式,就好给你0和1两个数,让你组合成一个 N 位数的数列,有多少种组合方法就有多少种表现方式,如一个两位的二进制编码,有
[ 0 0 ] [ 0 1 ] [ 1 0 ] [1 1 ]
4种组合方式(表现方式),无法满足题目中5个班级(要有5位)的要求,所以我们只能再加一位,以满足题意。这时便有了
[ 0 0 0 ] [ 0 0 1 ] [ 0 1 0 ] [ 0 1 1 ] [ 1 0 0 ] [ 1 0 1 ] [ 1 1 0 ] [ 1 1 1 ]
八种组合方式(表现方式),但这里我们只用到5位,制下的三位只能白白浪费。

40个学生就意味着至少要四十种表现方式,5位的表现方式共有32 ( 2的5次方 ) 种表现形式,无法达到题目要求,我们只能再增加一位,用6位64(2的6次方)种表现方式来表现40个学生,以满足题目要求。。。。
dick_1790
2011-06-30
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
我觉得应该选C吧,首先5个班至少要大于等于5的二进制来表示,而两位二进制数只能表示4,于是需要三位的二进制数即8表示。
同理,40也需要大于等于40的二进制数表示,但是5为二进制数只能表示32,于是要用到6位二进制数表示。
这样表示虽然有一些数没有使用,但是这样的表示方式才能完整的表示要求的班级学生编号。
希望我的回答对您有帮助。
追问
为什么两位二进制数只能表示4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖酥棍儿
2011-06-29 · TA获得超过692个赞
知道小有建树答主
回答量:393
采纳率:0%
帮助的人:385万
展开全部
C.用3位二进制数记录班级编码,6位二进制数记录学生编码

5个班级 至少是 3位 共8中方式
40个学生 至少是 6为 64 中方式
更多追问追答
追问
为什么5个班级 至少是 3位 共8中方式
40个学生 至少是 6为 64 中方式
追答
排列组合问题:
二进制 每位 有两种状态 1 和 0
要组合出 5 中状态 需要 3位, 2*2*2=8; 如果两位的话 2*2 =4 不满足
40个学生 至少是 6为 64 和上面的 同理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户26114
2011-06-30 · TA获得超过131个赞
知道答主
回答量:469
采纳率:0%
帮助的人:294万
展开全部
void binaryIO(char* file, int n)
{ Node t;
ifstream in(file);
for(int i=0;i<n;i++)
{ in.read((char*)&t.c,sizeof(char));
in.read((char*)&t.t,sizeof(short));
in.read((char*)&t.n,sizeof(int));
cout<<i+1<<": "<<t.c<<" "<<t.t<<" "<<t.n<<endl;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式