double nach bitset<64>?
-
groovemaster schrieb:
MaSTaH schrieb:
C++ kennt keine Bitangaben der Builtins.
Was hat das mit meiner Aussage zu tun?
Deine Aussage war falsch...
groovemaster schrieb:
Kannst du mir einen Standard Built-in Typ nennen, den ich unter einer 32 Bit Plattform für 64 Bit Integer verwenden kann?
Es gibt mehr als nur 32-Bit-Plattformen.
-
Toshi schrieb:
Zugegeben, ein wenig unsauber ist es schon...
Es ist eben nicht nur unsauber, sondern auch undefiniert. Das ist das blöde daran. Es funktioniert vielleicht mit ein bißchen Glück. Aber wenn es nicht tut, dann ist auch nicht der blöde Compiler oder sonstwas schuld. Wer solchen Code schreibt darf nicht erwarten, daß er funktioniert. So ist das nunmal. Bei Objekten fuhrwerkt man nicht einfach im Speicher rum wie man das möchte, sondern benutzt die Schnittstelle.
Du könntest zum Beispiel aus zwei unsigned longs jeweils in bitset<64> erzeugen. Das eine schiebst Du um 32 bit und dann benutzt Du ein simples | um die beiden miteinander zu verknüpfen. Oder Du wechselst auf ne 64bit-Plattform. Da ist long dann 64 bit und Du kannst es direkt im Konstruktor übergeben.
MfG Jester
-
Ich will ja nicht wirklich viel damit machen...
Eigentlich geht es mir nur darum, zwei doubles zu xor-en, um das erste unterschiedliche Bit zu finden!
Die Ausgabe ist nur ein Plus, um kontrollieren zu können, was passiert...Es würde doch eigentlich reichen, einen struct mit zwei ulongs zu bauen, die dann per reinterpret_cast über die doubles zu legen und die Komponenten paarweise zu xor-en....
Das wäre dann doch definiert, oder??
-
MaSTaH schrieb:
Deine Aussage war falsch...
Und das wäre...
MaSTaH schrieb:
Es gibt mehr als nur 32-Bit-Plattformen.
Was keine Antwort auf meine Frage ist. Mag sein, dass ich die Sache nicht so pragmatisch sehe wie du, aber ich gehe einfach mal davon aus, dass Toshi's Programm auf gängiger IA32 Hardware laufen soll und nicht auf einem Toaster.
-
Toshi schrieb:
Ich will ja nicht wirklich viel damit machen...
Eigentlich geht es mir nur darum, zwei doubles zu xor-en, um das erste unterschiedliche Bit zu finden!
Die Ausgabe ist nur ein Plus, um kontrollieren zu können, was passiert...Es würde doch eigentlich reichen, einen struct mit zwei ulongs zu bauen, die dann per reinterpret_cast über die doubles zu legen und die Komponenten paarweise zu xor-en....
Das wäre dann doch definiert, oder??
Es ist sogar gaengige Praxis, einen 64-Bit-Typ per struct zu repraesentieren:
struct int64 { unsigned long h; unsigned long l; };
Z. B. wird das bei uns in der Firma so gemacht. Natuerlich muss man, um mit
diesen Typen rechnen zu koennen, entsprechende Operationen zur Verfuegung
stellen.Und die restliche Diskussion hier ist eigentlich unnoetig. Wenn ihr euch
einfach darauf verlassen wollt, dass irgend ein Umstand "wohl auf einem XY
System funktionieren wird", dann koennt ihr das ja tun. Aber wundert euch
nicht, wenn es dann nicht funktioniert. Und falls ihr in einer Firma seid
und z. B. ein Warenwirtschaftssystem (wie komm ich bloss darauf :))
entwickelt, bei welchem staendig mit Geldbetraegen gerechnet wird, dann werdet
ihr euch hoffentlich _nicht_ auf so etwas verlassen. Denn wenn es mal nicht
hinhaut, koennen eure Kunden viel Geld verlieren und das ist gar nicht gut.mfg
v R