코드를 분석하고 알고리즘의 각 부분을 이해하려고했습니다. 이 나는 비트와 운영자가 내가 이해에서 & Bitwise 연산자 사용에 대한 이해
if (qpd >= 0) qpd += qpd&1;
else qpd -= qpd&1;
이 알고리즘이 변수 QPD에 대한 마스크로 1을 사용하고 싶어
사용이 부분을 통해 들어 왔지만 숫자는 단지 하나이기 때문에, 많은이 아니다 사실상 아무런 변화도 일으키지 않는 작업을 할 때 감각이 있어야합니다. 내가 잃어버린 이래로 여기 계신 분이 계세요. 다음비트 AND 연산자를 사용하여 배열의 크기 및 주파수를 얻는다 FOOR 루프는이다
/* this is the analysis step */
for (k = 0; k <= fftFrameSize2; k++) {
/* de-interlace FFT buffer */
real = gFFTworksp[2*k];
imag = gFFTworksp[2*k+1];
/* compute magnitude and phase */
magn = 2.*sqrt(real*real + imag*imag);
phase = atan2(imag,real);
/* compute phase difference */
tmp = phase - gLastPhase[k];
gLastPhase[k] = phase;
/* subtract expected phase difference */
tmp -= (double)k*expct;
/* map delta phase into +/- Pi interval */
qpd = tmp/M_PI;
if (qpd >= 0) qpd += qpd&1;
else qpd -= qpd&1;
tmp -= M_PI*(double)qpd;
/* get deviation from bin frequency from the +/- Pi interval */
tmp = osamp*tmp/(2.*M_PI);
/* compute the k-th partials' true frequency */
tmp = (double)k*freqPerBin + tmp*freqPerBin;
/* store magnitude and true frequency in analysis arrays */
gAnaMagn[k] = magn;
gAnaFreq[k] = tmp;
}
"사실상 변경되지 않습니다."라는 말이 의미가 없습니다. 어떤 경우에는 변화를 일으 킵니다. 그것에 대해 가상적인 것은 없습니다. – Mat
오, 죄송합니다. 매트! 내가 의미하는 바는 아무런 변화가 없다는 것입니다. 비트 연산자에 대한 이해에서 읽을 때 변경되지 않는 것처럼 보입니다. 마지막으로 아래 답변에서 그것을 이해했습니다. :) – user3160974