本文目录一览:
- 1、发送数据的比特序列怎么算
- 2、试计算求出其CRC校验的比特序列!
- 3、C# 比特数组是什么
- 4、使用c语言,生成一个实虚部分别为16比特的复数序列,长度为839.
- 5、C语言或c++能不能直接使用“比特”
发送数据的比特序列怎么算
要发送的数据比特序列为1010001101,CRC校验生成多项式为G(x)=x5+x4+x2+1,
试计算求出其CRC校验的比特序列!
110101是六位的,所以先在100010010111后加五个0,变为10001001011100000,再用10001001011100000除以110101,把得到的余数加到10001001011100000上就搞定了
C# 比特数组是什么
没区别~都是数组,把它看成一组序列号嘛,普通数组是不同类型的,比如String,int等等,int型数组就看成全部是int型的一组序列号,由下标0.1.2.3来表示。String型数组就是一组字符串序列号,"123.21245.365"组成
Bit数组装的只是二进制组成的一组数据或者序列号,这样你好理解了吧?
使用c语言,生成一个实虚部分别为16比特的复数序列,长度为839.
#include stdio.h
#include stdlib.h
#include time.h
const int MAXSIZE = 839;
typedef struct complex {
unsigned short real;
unsigned short image;
}COMPLEX;
char *toString(unsigned short n,char s[]) {
int i = 15;
s[16] = '\0';
while(i = 0) {
s[i] = n % 2 + '0';
n /= 2;
--i;
}
return s;
}
void show(COMPLEX a[], int n) {
int i;
char s[17];
for(i = 0; i n; ++i) {
printf("%6d : %s\n",a[i].real,toString(a[i].real,s));
printf("%6d : %s\n\n",a[i].image,toString(a[i].image,s));
}
}
int main() {
COMPLEX myvector[MAXSIZE];
int i,n = 7;
srand((unsigned short)time(NULL));
for(i = 0; i n; ++i) {
myvector[i].real = rand()%100;
myvector[i].image = rand()%100;
}
show(myvector,n);
return 0;
}
C语言或c++能不能直接使用“比特”
我记得C语言中有一种叫做“位段”的东西,但是不知道现在的编译器是不是还支持:
struct tag {
unsigned int a :1; //占一个bit
unsigned int b :7; //占7个bit
};
这种东西在C++中不一定还支持,而且在现实的计算机中,空间往往不值得费这么大劲,编译器往往会把两个字节的东西优化为四个字节(为了速度,牺牲空间),更不要说这种计较每个bit的方法了。
如果必须要用,我建议你用位操作。比如 int a; //4个byte,32个bit
a |= 0x03; //把末两个bit都置为1
a = (a ~0x00FF) | (b 0xFF); //把a的低8位置为b的低八位。
等等。。。