Quadrireung hat negative Zahl zur Folge
-
int BinToDez(int BIN) { string DEZ_str; DEZ_str = IntToStr(BIN); int Counter = 0; int DEZ = 0; while (Counter < DEZ_str.length()) { Counter++; string Current; Current = DEZ_str.substr(Counter-1,1); int Cur = StrToInt(Current); if (Cur == 1) DEZ += 2^(DEZ_str.length()-Counter+1); //HIER } return DEZ; }dazu wurde ich in nem anderen Tread motiviert

ABER: wenn ich die der markierte Zeile wie folgt ändere:
DEZ += 2^(DEZ_str.length()-Counter-1);
dann kommt als ergebnis (1001 = BIN) -3 raus.
Wie kann denn das sein ?EDIT: übrigens das funzt so ^^
EDIT 2: doch nicht ^^
-
^ ist der xor-Operator, vermutlich möchtest du aber potenzieren.
Das geht mit pow oder speziell für Zweierpotenzen kannst du den Shiftoperator verwenden (1<<x entspricht 2^x).
-
Übrigens ist 2x keine Quadrierung.

-
oh, dann gehts doch ohne + 1 nach Counter, so wie es sein sollte,
xor hab ich noch nie benutzt, wie man sieht.
-
Doch anscheinend schon, wie man sieht (nur ohne es zu wissen)

-
hmmm, damit hab ich jetzt nicht gerechnet.
Zuerst musste ich nachdenken, dann hab ichs verstanden.
xor, sowas brauch ich gar nicht
.PS: beim schnellschreiben schreib ich meist nciht oder äinlcude ^^
-
das ist doch binäres xor. Der operator wird aber meißt nur dann verwendet, wenn man hardwarenah Programmiert. Für anwendungen ist der Tatsächlich oft irrelevant.
-
Ich würde eher "low-level" sagen als hardwarenah, kommt denke ich eher hin.
Dinge wie Prüfsummen, Kryptographie etc. sind ja nicht wirklich hardwarenah