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个学生,以满足题目要求。。。。
我觉得应该选C吧,首先5个班至少要大于等于5的二进制来表示,而两位二进制数只能表示4,于是需要三位的二进制数即8表示。
同理,40也需要大于等于40的二进制数表示,但是5为二进制数只能表示32,于是要用到6位二进制数表示。
这样表示虽然有一些数没有使用,但是这样的表示方式才能完整的表示要求的班级学生编号。
希望我的回答对您有帮助。
C.用3位二进制数记录班级编码,6位二进制数记录学生编码
5个班级 至少是 3位 共8中方式
40个学生 至少是 6为 64 中方式
void binaryIO(char* file, int n)
{ Node t;
ifstream in(file);
for(int i=0;i
in.read((char*)&t.t,sizeof(short));
in.read((char*)&t.n,sizeof(int));
cout< }
}