T
TrµMAn
Bekanntes Mitglied
Hallo ihr lieben,
wollte mal nachfragen, die man in C++ den größtmöglichen Wert einer Variable (also abhängig vom Datentyp) einfach erzeugen kann. (nicht errechnen!)
Also eine Möglichkeit (die wegen hoher Rechenleistung und zeitaufwand nicht in Frage kommt) wäre ja, die Variable solange zu erhöhen, bis sie Negativ wird und dann wieder einen davon abziehen (es geht übrigens um Short und Long, jeweils einmal mit und ohne Vorzeichen) Außerdem darf die Bit_anzahl_ nicht berücksichtigt werden.
Meine Überlegung war nun folgende:
also einfach die Bitweise negation der 0, dies funktioniert leider nichtmal bei 2 Variablen ...
das Ergebniss sieht dann so aus:
mal kurz mit dem Windows7 Taschenrechner rumprobiert um bei 4 Byte auf das richtige Ergebniss für den Longint zu kommen, passt
Allerdings müsste dies beim Shortint ohne VZ doch genau so klappen?
bei den mit VZ habe ich mir schon etwas überlegt, da das erste bit ja angeben sollte, welches vorzeichen die Variable hat, müsste ich doch nur eine Bit-weise verschiebung nach rechts machen, leider auch kein Erfolg...
so nun seid ihr gefragt: Wo liegt mein Fehler?
btw: ich benutze Microsoft Visual Studio 2005 Professional Edition
wollte mal nachfragen, die man in C++ den größtmöglichen Wert einer Variable (also abhängig vom Datentyp) einfach erzeugen kann. (nicht errechnen!)
Also eine Möglichkeit (die wegen hoher Rechenleistung und zeitaufwand nicht in Frage kommt) wäre ja, die Variable solange zu erhöhen, bis sie Negativ wird und dann wieder einen davon abziehen (es geht übrigens um Short und Long, jeweils einmal mit und ohne Vorzeichen) Außerdem darf die Bit_anzahl_ nicht berücksichtigt werden.
Meine Überlegung war nun folgende:
Code:
include <iostream>
using namespace std;
void Main()
{
short ssh = 0;
cout << "groesster Shortint mit VZ: " << ~ssh << "\n";
unsigned short ush = 0;
cout << "groesster Shortint ohne VZ: " << ~ush << "\n";
long sl = 0;
cout << "groesster Longint mit VZ: " << ~sl << "\n";
unsigned long ul = 0;
cout << "groesster Longint ohne VZ: " << ~ul << "\n";
}
also einfach die Bitweise negation der 0, dies funktioniert leider nichtmal bei 2 Variablen ...
das Ergebniss sieht dann so aus:
groesster Shortint mit VZ: -1
groesster Shortint ohne VZ: -1
groesster Longint mit VZ: -1
groesster Longint ohne VZ: 4294967295
mal kurz mit dem Windows7 Taschenrechner rumprobiert um bei 4 Byte auf das richtige Ergebniss für den Longint zu kommen, passt
Allerdings müsste dies beim Shortint ohne VZ doch genau so klappen?
bei den mit VZ habe ich mir schon etwas überlegt, da das erste bit ja angeben sollte, welches vorzeichen die Variable hat, müsste ich doch nur eine Bit-weise verschiebung nach rechts machen, leider auch kein Erfolg...
so nun seid ihr gefragt: Wo liegt mein Fehler?
btw: ich benutze Microsoft Visual Studio 2005 Professional Edition