hallo,
ich lege zwei 14bit große zeichenketten an welche mit einsen gefüllt werden. nValue ist der wert der zweierpotenz - 1. so erhalte ich in binärdarstellung nach meinem algorithmus in der while-schleife weiterhin lauter einsen in der zeichenkette. wenn keine zweierpotenz vorliegt entstehen in der binärdarstellung nullen. in der if-abfrage prüfe ich ob der comp und der bits gleich sind (= zweierpotenz). für gleichheit sollte laut msdn 0 zurück geliefert werden. trotz gleicher strings läuft mein programm dennoch in die if-abfrage.
beim debuggen standen im speicher sowohl in comp als auch in bits nur einsen drin. ich verstehe da den zusammenhang nicht mehr.
kann mir jemand weiterhelfen oder benötige ich eine zusätzliche bibliothek?
ich lege zwei 14bit große zeichenketten an welche mit einsen gefüllt werden. nValue ist der wert der zweierpotenz - 1. so erhalte ich in binärdarstellung nach meinem algorithmus in der while-schleife weiterhin lauter einsen in der zeichenkette. wenn keine zweierpotenz vorliegt entstehen in der binärdarstellung nullen. in der if-abfrage prüfe ich ob der comp und der bits gleich sind (= zweierpotenz). für gleichheit sollte laut msdn 0 zurück geliefert werden. trotz gleicher strings läuft mein programm dennoch in die if-abfrage.
beim debuggen standen im speicher sowohl in comp als auch in bits nur einsen drin. ich verstehe da den zusammenhang nicht mehr.
kann mir jemand weiterhelfen oder benötige ich eine zusätzliche bibliothek?
C++:
void CDisplayControl::OnSpectrum()
{
int nValue = ((CWiwoDlg*)GetParent())->GlPar.nNperB-1;
char bits[14];
char comp[14];
int i;
for(i=0; i < 14; i++)
{
bits[i] = '1';
comp[i] = '1';
}
i = 0;
while(nValue != 0)
{
bits[14-i] = '0' + nValue%2;
nValue = nValue/2;
i++;
}
// NSamples must be a potenz of 2, from 2^7 until 2^e14!
if(strcmp(comp, bits) != 0)
{
CString msg = "N Samples muss 2er Potenz sein!\nGültigkeitsbereich von +2e7 bis +2e14.";
MessageBoxEx(((CWiwoDlg*)GetParent())->GetSafeHwnd(), msg, "Hinweis", MB_ICONWARNING, LANG_GERMAN);
m_ctrlSpectrum.SetCheck(0);
return;
}
}