/*Polar SC的C++实现*/
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<iostream>
const int N = 16;
const int n = 5;
int A[N][n];
int CBR[N] = { 0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1 };//数组CBR装有16位固定比特集
//资料:16码长的固定比特与信息比特排序表(固定比特用0表示,信息比特用1表示)
int main() {
srand((unsigned)time(NULL));
//设定种子随机数,使随机数随时间改变
int Vi, e, sum = 0, s = 0;
for (Vi = 0; Vi < N; Vi++) {
if (CBR[Vi])A[Vi][0] = rand() % 2;
//CBR数组中非0的元素是信息比特位,在对应行产生0或1的随机数
else A[Vi][0] = 0;
//固定比特位仍然为0
}
int h = N, y1, o;
for (y1 = 0; y1 < n - 1; y1++) {
for (o = 0; o < N; o = o + (2 * N) / h) {
for (e = o; e < o + N / h; e++) {
A[e][y1 + 1] = A[e][y1] ^ A[e + N / h][y1] ? 1 : 0;
//^即为异或运算符号
A[e + N / h][y1 + 1] = A[e + N / h][y1];
}
}
h /= 2;
}
cout << "原码序列:" << endl;
for (y1 = 0; y1 < N; y1++) cout << A[y1][0];
cout << endl;
cout << "编码结果:" << endl;
for (y1 = 0; y1 < N; y1++) cout << A[y1][n - 1];
return 0;
}
Polar SC的C++实现
最新推荐文章于 2024-06-05 23:57:12 发布