Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Сегодня коды Грея широко используются для упрощения выявления и исправления ошибок в системах связи, а также в формировании сигналов обратной связи в системах управления.
что нам дают коды Грея?
255: 0_1111_1111 => 256: 1_0000_0000
int X[100],N;
void PrintX(int a,int b){
for(int i=0;i<N;i++) printf("%d",i<a ? X[i] : b);
printf("\n");
}
void Gray(int u,int v,int d){
if(u==v) PrintX(N-u,1);
else if(v==0) PrintX(N-u,0);
else{
X[N-u]=d;
Gray(u-1,v-d,0);
X[N-u]=1-d;
Gray(u-1,v+d-1,1);
}
}void Gray2(int n){
for(int k=1<<n;--k>=0;){
int s=k^(k>>1);
for(int i=0;i<n;i++) printf("%d",(s>>i)&1);
printf("\n");
}
}
В дополнение
Один из способов генерации 2D кода Грея (сигнального созвездия) для: QAM-4, QAM-16, QAM-64, QAM-256, ...
И если в университете вам показывали "метод зиг-зага", и вам было трудно его запомнить/понять/использовать, то этот способ будет более простым/наглядным/быстрым, чем "зиг-заг".
P.S. Возможно скоро кто-нибудь сделает видео получше (у меня плохо получаются real-time записи), и добавит в него QAM-64 и QAM-256. ...возможно.
Коды Грея и задачи перебора