C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Re: double als big integer missbrauchen?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Steffen Rauh
Guest





PostPosted: Thu Jun 24, 2004 2:03 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote



Quote:
für ein Projekt benötige ich einen Integer mit mehr als 32 Bit (es geht
um eine DateTime-Klasse, die auch außerhalb der Unix-Epoche funktionieren
soll, also vor dem 1.1.1970 und über 2038 hinaus). Das Ganze soll
möglichst portabel sein, daher fallen proprietäre Erweiterungen als
Lösung weg.

Wie weit soll es denn über 2038 hinaus reichen? Nur ein, zwei Jahre?
Jahrzehnte? Jahrmillionen? Das sollte vorher definiert werden, bevor man
sich Gedanken über irgendwelche Datenstrukturen macht.

Quote:
Nun habe ich bei meiner Recherche im Netz erfahren, dass man offenbar IEEE
754 double precision Gleitkommazahlen (double) als Integer mit bis zu 53
Bit 'missbrauchen' kann. Rein logisch (und experimentell) leuchtet mir das

Hab' ich zwar selbst noch nie gemacht, aber bei dem Gedanken, eine
Gleitkommazahl als Ganzzahl zu mißbrauchen dreht sich mein Magen (kann aus
Unwissenheit sein oder auch auf Grund böser Vorausahnungen).

Quote:
Die Frage ist, ob es dabei irgendwelche Fallen geben könnte, die nicht so
offensichtlich sind, oder ob es eine bessere (ebenfalls portable) Lösung
gibt? Eine spezielle Bibliothek wie GMP erscheint mir für dieses Problem
als Overkill.

Wenn dein Wertebereich nicht definiert ist, wirst du um etwas wie GMP nicht
rum kommen (oder etwas ähnliches). Wenn du aber davon ausgehst, dass dir 64
Bit ausreichen werden, dann bilde doch ein Integer-Verhalten in einer Klasse
für einen 64 Bit Integer nach. Etwa so:

class BigInt
{
protected:
unsigned int m_Data[2];

public:
BigInt();
~BigInt();

public:
// operatoren für addition, subtraktion usw

};

Addition und Subtraktion lassen sich recht simpel realisieren. Beim
Unter-/Überlauf muss in die nächste Stelle gesprungen werden. Multiplikation
und Division kann entweder über Additionen oder Subtraktionen dargestellt
werden oder (wenn Geschwindigkeit entscheident ist) über diverse
Langzahlarithmetik-Algorithmen. Eine Google-Suche zum Thema bringt einiges
Brauchbares. Das ganze ist dann auch noch schön portabel, wenn du dich an
ISO C++ hältst.

Mit GMP bist du aber auf jeden Fall schneller am Ziel und erzielst eine
höhere Performance als mit Eigenimplementierungen.

Tschüss,
Steffen

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Kurt Watzka
Guest





PostPosted: Thu Jun 24, 2004 5:54 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote



Steffen Rauh schrieb:

Quote:
Joern P. Meier schrieb:

für ein Projekt benötige ich einen Integer mit mehr als 32 Bit (es geht
um eine DateTime-Klasse, die auch außerhalb der Unix-Epoche funktionieren
soll, also vor dem 1.1.1970 und über 2038 hinaus). Das Ganze soll
möglichst portabel sein, daher fallen proprietäre Erweiterungen als
Lösung weg.

Wie weit soll es denn über 2038 hinaus reichen? Nur ein, zwei Jahre?
Jahrzehnte? Jahrmillionen? Das sollte vorher definiert werden, bevor man
sich Gedanken über irgendwelche Datenstrukturen macht.

Nun habe ich bei meiner Recherche im Netz erfahren, dass man offenbar
IEEE 754 double precision Gleitkommazahlen (double) als Integer mit bis
zu 53 Bit 'missbrauchen' kann. Rein logisch (und experimentell) leuchtet
mir das

Hab' ich zwar selbst noch nie gemacht, aber bei dem Gedanken, eine
Gleitkommazahl als Ganzzahl zu mißbrauchen dreht sich mein Magen (kann aus
Unwissenheit sein oder auch auf Grund böser Vorausahnungen).

Keine böse Vorahnung Wink. Man kann sich ja <cfloat> ansehen um
herauszubekommen, welchen Wertebereich double (oder vieleicht long
double, wenn der eine laengere Mantisse bietet) als exakter
Ganzzahldatentyp hat. Mit einer typischen double-Implementation
(IEEE 754 double precision) kann mit dem Bezugszeitpunkt 1.1.1970 das
Zeitfenster vom Beginn des Mesozoikums bis weit in die Zukunft mit
Sekundenaufloesung dargestellt werden. Fuer die exakten Geburtszeitpunkte
der ersten Archosaurier reicht das natuerlich nicht, aber zumindest der
sekundengenaue Geburtszeitpunkt jedes Dinosauriers und jedes Saeugetiers
auf der Erde ist mit dieser Datums-Darstellung (Sekunden vor oder nach dem
1.1.1970, 0 Uhr GMT) abgedeckt. Kniffliger wird da schon die richtige
Beruecksichtigung von Schaltsekunden.

Quote:

Die Frage ist, ob es dabei irgendwelche Fallen geben könnte, die nicht so
offensichtlich sind, oder ob es eine bessere (ebenfalls portable) Lösung
gibt? Eine spezielle Bibliothek wie GMP erscheint mir für dieses Problem
als Overkill.

Da hast Du vermutlich recht. Eine Garantie, dass Du eine IEEE
754-Fliesskomma-Implementation vorfindest hast Du aber in C++
nicht.

Kurt Watzka

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Christoph Rabel
Guest





PostPosted: Thu Jun 24, 2004 6:30 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote



Joern P. Meier wrote:
Quote:

für ein Projekt benötige ich einen Integer mit mehr als 32 Bit (es geht
um eine DateTime-Klasse, die auch außerhalb der Unix-Epoche funktionieren
soll, also vor dem 1.1.1970 und über 2038 hinaus). Das Ganze soll
möglichst portabel sein, daher fallen proprietäre Erweiterungen als
Lösung weg.

Hi!

Wenn du nicht 100%ig portabel bleiben musst, dann stellen
die meisten Compiler 64bit Integer zur Verfügung. z.B. der
gcc "long long" und der VC __int64.

long long sollte auch noch halbwegs portabel sein, da es
durch den C Standard vorgeschrieben ist.

Garantie, das ein Typ wirklich N Bit hat gibt es natürlich
nie, also würde ich eventuell noch eine Compiletimeassertion
einbauen ob der Typ wirklich die gewünschte Größe hat.

mfg

Christoph

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Gerhard Wesp
Guest





PostPosted: Thu Jun 24, 2004 8:21 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote

Joern P. Meier <spam.2003.05 (AT) usenet (DOT) ionflux.de> wrote:
Quote:
Die Frage ist, ob es dabei irgendwelche Fallen geben könnte, die nicht so
offensichtlich sind, oder ob es eine bessere (ebenfalls portable) Lösung

Ich sehe keine Fallen. Um ganz sicherzugehen, kannst du nach jeder
Operation auf Ganzzahl runden, das sollte dann auch mit
nicht-IEEE-Arithmetik funktionieren.

Die Frage ist, musst du deine Zeit wirklich als Ganzzahl darstellen?
Das erscheint insofern unlogisch, als ja die Zeit in der Realitaet
kontinuierlich verlaeuft. (Wenn nicht die moderne Physik schon eine
atomare Zeiteinheit entdeckt hat Smile Ich jedenfalls verwende fuer
Zeiten grundsaetzlich double und fahre gut damit.

-Gerhard
--
Gerhard Wesp o o Tel.: +41 (0) 43 5347636
Bachtobelstrasse 56 | http://www.cosy.sbg.ac.at/~gwesp/
CH-8045 Zuerich _/ See homepage for email address!

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Markus Pesti
Guest





PostPosted: Fri Jun 25, 2004 6:33 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Gerhard Wesp wrote:

Quote:
Ich jedenfalls verwende fuer
Zeiten grundsaetzlich double und fahre gut damit.

-Gerhard

Da sehe ich aber Probleme mit der Überprüfung auf Gleichheit:
if(dt1 == dt2) ist dann unsicher.

Markus

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Helmut Zeisel
Guest





PostPosted: Fri Jun 25, 2004 7:35 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Gerhard Wesp wrote:
Quote:
Joern P. Meier <spam.2003.05 (AT) usenet (DOT) ionflux.de> wrote:

Die Frage ist, ob es dabei irgendwelche Fallen geben könnte, die nicht so
offensichtlich sind, oder ob es eine bessere (ebenfalls portable) Lösung


Ich sehe keine Fallen.

Die bekannteste Falle ist natuerlich, dass "a==b" bei Gleitkommazahlen
nur sehr selten "true" liefert. Hier wird ein "fabs(a-b) Fragestellung angepasstem "eps") benoetigt.

Quote:
Die Frage ist, musst du deine Zeit wirklich als Ganzzahl darstellen?
Das erscheint insofern unlogisch, als ja die Zeit in der Realitaet
kontinuierlich verlaeuft.

Und die Frage, was "gleichzeitig" wirklich bedeutet (also eben "a==b")
ist in der Physik auch nicht so einfach zu beantworten.

Jedenfalls wuerde ich auch meinen, dass fuer die konkrete Anwendung
(Zeit als Sekunden) der Fehler in double Variablen geringer ist als der
Fehler durch Vernachlaessigung der Schaltsekunden ud der Veraenderungen
der Erdrotation durch die Gezeitenkraefte.

Helmut

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Helmut Zeisel
Guest





PostPosted: Fri Jun 25, 2004 8:20 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Markus Pesti wrote:

Quote:
Gerhard Wesp wrote:


Ich jedenfalls verwende fuer
Zeiten grundsaetzlich double und fahre gut damit.

-Gerhard


Da sehe ich aber Probleme mit der Überprüfung auf Gleichheit:
if(dt1 == dt2) ist dann unsicher.

Ja, aber das passt mit der Physik zusammen.

Helmut

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Kurt Watzka
Guest





PostPosted: Fri Jun 25, 2004 9:41 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Helmut Zeisel wrote:

Quote:
Gerhard Wesp wrote:
Joern P. Meier <spam.2003.05 (AT) usenet (DOT) ionflux.de> wrote:

Die Frage ist, ob es dabei irgendwelche Fallen geben könnte, die nicht so
offensichtlich sind, oder ob es eine bessere (ebenfalls portable) Lösung


Ich sehe keine Fallen.

Die bekannteste Falle ist natuerlich, dass "a==b" bei Gleitkommazahlen
nur sehr selten "true" liefert. Hier wird ein "fabs(a-b) Fragestellung angepasstem "eps") benoetigt.

Wenn a und b eine exakte Darstellung als Gleitkommazahl haben, und wenn
a und b die gleiche Zahl enthalten, dann ist a == b eben doch true.

Wenn einer der Operanden ein Ergebnis einer Gleitkommaoperation ist,
bei der sich ein Fehler ansammeln kann, dann stimt der Vorbehalt
natuerlich schon, aber bei Additionen, Subtraktionen, Multiplikationen
und Divisionen fuer die beide Operanden und das Ergebnis eine exakte
Darstellung als Fliesskommazahl haben stimmt der Vorbehalt eben nicht.

In anderen Worten: Auch wenn die Summe von 10 Summanden mit dem Wert 0.1
sehr selten 1.0 ist, ist doch die Summe von 57823 Summanden mit dem Wert
2.0 bei einer gebraeuchlichen Fliesskommadarstellung 115646.0 und die Summe
von 57823 Summanden mit dem Wert 0.25 ist bei einer Fleisskommadarstellung
mit Basis 2 exakt 14455.75

Kurt Watzka

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Joern P. Meier
Guest





PostPosted: Fri Jun 25, 2004 9:50 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Kurt Watzka wrote:
Quote:
Steffen Rauh schrieb:
Joern P. Meier schrieb:

[...] Mit einer typischen double-Implementation
(IEEE 754 double precision) kann mit dem Bezugszeitpunkt 1.1.1970 das
Zeitfenster vom Beginn des Mesozoikums bis weit in die Zukunft mit
Sekundenaufloesung dargestellt werden. Fuer die exakten Geburtszeitpunkte
der ersten Archosaurier reicht das natuerlich nicht, aber zumindest der
sekundengenaue Geburtszeitpunkt jedes Dinosauriers und jedes Saeugetiers
auf der Erde ist mit dieser Datums-Darstellung (Sekunden vor oder nach dem
1.1.1970, 0 Uhr GMT) abgedeckt. Kniffliger wird da schon die richtige
Beruecksichtigung von Schaltsekunden.

Mir geht es primär um die richtige Darstellung von und das Rechnen mit
Daten im Bereich 1930-2100. Dass auch die Geburtstage der Dinosaurier
dargestellt werden können, ist nur ein positiver Nebeneffekt. ;)

Die Berücksichtigung von Schaltsekunden hat auch allenfalls Bedeutung,
wenn astronomische Genauigkeit vorgesehen ist. Soweit ich weiß sind im
POSIX time_t auch keine Schaltsekunden berücksichtigt, die Umrechnung
sollte also auch ohne ein entsprechendes Feature klappen.

Quote:
Da hast Du vermutlich recht. Eine Garantie, dass Du eine IEEE
754-Fliesskomma-Implementation vorfindest hast Du aber in C++
nicht.

Das ist wohl wahr, aber *so* portabel muss es dann auch wieder nicht
sein. ;)

Grüße,

Jörn

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Olaf Krzikalla
Guest





PostPosted: Fri Jun 25, 2004 10:09 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Hi,

Gerhard Wesp schrieb:
Quote:
kontinuierlich verlaeuft. (Wenn nicht die moderne Physik schon eine
atomare Zeiteinheit entdeckt hat Smile
@offtopic: AFAIK hat sie das. Nennt sich Planckzeit und ist ca. 10^-41

sec 'lang'. Schneller als 10^41 Hz werden die Rechner also nicht ;-)

@topic: Die Frage ist ja, was _möglichst_ portabel bedeutet. Auch
schließen sich ja portabel und properietär nicht a priori aus. Ich denke
jedoch, dass die Verwendung eines >=64-Bit-Integers und ein dazu
geeignetes typedef (durch welches die Portabilitätsproblme auf einen
engen Bereich begrenzt werden) in der Praxis durchaus ausreichend sind
(das Problem hat man ja im Prinzip mit jedem X-Bit-Integer, wenn X > 8
eine geforderte Mindestanzahl ist).

MfG
Olaf Krzikalla

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Dirk Jagdmann
Guest





PostPosted: Fri Jun 25, 2004 1:53 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote

Hallo Joern,

Quote:
für ein Projekt benötige ich einen Integer mit mehr als 32 Bit (es geht
um eine DateTime-Klasse, die auch außerhalb der Unix-Epoche funktionieren
soll, also vor dem 1.1.1970 und über 2038 hinaus). Das Ganze soll
möglichst portabel sein, daher fallen proprietäre Erweiterungen als
Lösung weg.

Warum nimmst du nicht einfach die typedefs aus <stdint.h>

z.B.
int8_t, int16_t, int32_t, int64_t
uint32_t, uint64_t
uint_least32_t, uint_least64_t
uint_fast64_t usw.

Der header ist relativ neu (ich glaube aus dem Umfeld des C99 Standards,
von daher z.B. nicht standardmäßig bei Visual C 6 dabei, aber wo nicht
vorhanden schreibt man ich sich eben selbst. Auf jeden Fall ist das
Header File und die typedefs standardisiert und somit auch portabel.

Wenn du jetzt natürlich für eine 16bit embedded Platform entwickelst,
wirst du wohl nicht um die Entwicklung einer BigInt Klasse herumkommen.
Aber du könntest dann trotzdem die entsprechenden typedefs von der
Klasse nach int32_t usw. machen und dann durch die Benutzung von
operator overloading wieder portablen code erzeugen.
--
---> doj / cubic
----> http://cubic.org/~doj
-----> http://llg.cubic.org

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Hannah Schroeter
Guest





PostPosted: Fri Jun 25, 2004 4:51 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote

Hallo!

Joern P. Meier <spam.2003.05 (AT) usenet (DOT) ionflux.de> wrote:
Quote:
[...]

Mir geht es primär um die richtige Darstellung von und das Rechnen mit
Daten im Bereich 1930-2100. Dass auch die Geburtstage der Dinosaurier
dargestellt werden können, ist nur ein positiver Nebeneffekt. ;)

[...]

Das ist wohl wahr, aber *so* portabel muss es dann auch wieder nicht
sein. Wink

Was spricht dann gegen int64_t aus <stdint.h> bei jedem Compiler,
der die C99-Features auch im C++-Kontext anbietet?

Ist wenigstens halbwegs Standard, wird wahrscheinlich irgendwann
auch offiziell zu C++ gehören, ist schon mancherorts implementiert
(gcc3 auf jeden Fall).

Das reicht dann etwa bis zum Jahr
1970+2^63/60/60/24/366 = 291672108984.48263914187411455171,
wenn Du in dem int64_t Sekunden zählst. Wenn Du's genauer brauchst,
nimm noch Nanosekunden als uint32_t in einer Struktur mit hinzu,
so ähnlich wie bei struct timeval bzw. struct timespec auf dem
freundlichen Un*x nebenan (nur schade, daß dort der time_t nicht
so langsam auf mindestens int64_t definiert wird).

(Danke an bc!)

Gruß,

Hannah.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Hannah Schroeter
Guest





PostPosted: Sat Jun 26, 2004 8:24 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Hallo!

Dirk Jagdmann <doj (AT) cubic (DOT) org> wrote:
Quote:
[...]

Wenn du jetzt natürlich für eine 16bit embedded Platform entwickelst,
wirst du wohl nicht um die Entwicklung einer BigInt Klasse herumkommen.
Aber du könntest dann trotzdem die entsprechenden typedefs von der
Klasse nach int32_t usw. machen und dann durch die Benutzung von
operator overloading wieder portablen code erzeugen.

Naja, da würde ich doch mal schätzen, daß auf 16-bittern dann
int (und short) die 16 Bit sind, long 32 Bit. Und warum sollte nicht
auch da der Compiler long long oder (u)int64_t zur Verfügung stellen?
Wird ja auch auf 32-Bittern oft zur Verfügung gestellt, auch wenn da
dann auch die Operationen mehrere Instruktionen benötigen.

Man sollte nur dann halt nicht ständig long oder so einsetzen,
sondern nur, wo's wirklich nötig ist.

Gruß,

Hannah.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Sat Jun 26, 2004 9:33 am    Post subject: Re: double als big integer missbrauchen? Reply with quote

Hannah Schroeter wrote:

Quote:
Hallo!

Joern P. Meier <spam.2003.05 (AT) usenet (DOT) ionflux.de> wrote:
[...]

Mir geht es primär um die richtige Darstellung von und das Rechnen mit
Daten im Bereich 1930-2100. Dass auch die Geburtstage der Dinosaurier
dargestellt werden können, ist nur ein positiver Nebeneffekt. ;)

[...]

Das ist wohl wahr, aber *so* portabel muss es dann auch wieder nicht
sein. ;)

Was spricht dann gegen int64_t aus <stdint.h> bei jedem Compiler,
der die C99-Features auch im C++-Kontext anbietet?

int64_t muß nicht unterstützt werden. Und wenn schon, dann würde ich
lieber int_fast64_t nehmen.

Quote:
Ist wenigstens halbwegs Standard, wird wahrscheinlich irgendwann
auch offiziell zu C++ gehören, ist schon mancherorts implementiert
(gcc3 auf jeden Fall).

Das reicht dann etwa bis zum Jahr
1970+2^63/60/60/24/366 = 291672108984.48263914187411455171,
^

365.25 wäre etwas genauer :-)

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Sat Jun 26, 2004 3:04 pm    Post subject: Re: double als big integer missbrauchen? Reply with quote

Hannah Schroeter wrote:

Quote:
Hallo!

Dirk Jagdmann <doj (AT) cubic (DOT) org> wrote:
[...]

Wenn du jetzt natürlich für eine 16bit embedded Platform entwickelst,
wirst du wohl nicht um die Entwicklung einer BigInt Klasse
herumkommen. Aber du könntest dann trotzdem die entsprechenden
typedefs von der Klasse nach int32_t usw. machen und dann durch die
Benutzung von operator overloading wieder portablen code erzeugen.

Naja, da würde ich doch mal schätzen, daß auf 16-bittern dann
int (und short) die 16 Bit sind, long 32 Bit. Und warum sollte nicht
auch da der Compiler long long oder (u)int64_t zur Verfügung stellen?

In C99 _muß_ er das sogar, in zukünftigen Versionen von C++ mit
Sicherheit auch.

Quote:
Wird ja auch auf 32-Bittern oft zur Verfügung gestellt, auch wenn da
dann auch die Operationen mehrere Instruktionen benötigen.

Wobei dies auf Assembler-Ebene meist performanter machbar ist, als in
C(++).

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.