Christoph Zurnieden: Integer Variable wie in C

Beitrag lesen

Hi,

wie ihr wisst, kann in C eine Integer Variable max. 32 Bit Zahlen speichern, also rund 4 Mrd. (unsigned).

Ja? Also meines Wissens ist das nirgendwo festgelegt. Augenblick, ich schau nochmal in den Standard: nein, ist nicht. Du kannst es auch nicht selber exakt festlegen, laut Standard sind nur Mindestgrößen möglichen. Siehe "limits.h" und "stdint.h".

Wenn man diese grenze Überschreitet, dann wird wieder von vorne "gezählt".
In JavaScript kann man aber in eine Variable locker Zahlen bis ca. 10 Mrd. speichern, bevor es diesen "überlauf" gibt.

Peinlicherweise habe ich gerade kein ECMA-Papier zur Hand, glaube mich aber entsinnen zu können, das dies so auch nicht festgelegt ist. Bitte dringend um Korrektur, falls erforderlich.

Mein Problem ist, dass ein JavaScript genauso rechnen muss wie ein C Programm.
Dies habe ich gelöst indem ich mod 4294967296 (%4294967296) für die Berechnung benutze, dies funktioniert aber nicht einwandfrei.

Wenn es nicht einwandfrei funktioniert, hast Du es auch nicht gelöst.
*grummel*
;-)

Mein C Code implementiert xTEA:

Na, das sieht dann aber doch eher nach dem Wheeler/Needham aus, gelle? ;-)
[...]

Die sum wird richtig berechnet, nur es gibt einen Fehler bei v0 und v1, diese werden falsch berechnet.

Was bitte heißt "falsch berechnet"? Wenn Du das rausbekommen hast, weißt Du auch, was Du falsch gemacht hast. Geh' einfach mal die Rechnung da durch.

Wodran liegt dies, und wie kann man es lösen?

Du bist von falschen Voraussetzungen ausgegangen und hast die Shifts nicht ausreichend beachtet.
Wenn Du statt der arithmetischen Berechnungen die Bitschuppserei _vollständig_ durchziehst klappt's.

BTW: auf http://www.simonshepherd.supanet.com/tea.htm gibt's auch zwei schon fertige Javascriptvarianten. Schau doch einfach mal unverbindlich rein.

so short

Christoph Zurnieden