本文目錄一覽:
- 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的低八位。
等等。。。
原創文章,作者:NZMF,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/137279.html