Re: 2 Integerwerte in einem Integerwert reversibel speichern
Vielen Dank an alle für die fundierten Antworten!
|
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Zitat:
|
Re: 2 Integerwerte in einem Integerwert reversibel speichern
er meinte tatsächlich 8 bezogen auf die Grenze von 128 welche eben die Mitte wäre bei 8bit-unsigned
|
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Zitat:
@sir: Hagen meinte aber wie ich "signed". Ich wollte cuh gar nicht darauf weiter rumreiten. Ich musste bei Hagens Beitrag nur schmunzeln. :dp: |
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Hallo !
Ich hab auch noch eine Idee, allerdings eher mathematisch und ich weiß nicht genau ob es funktioniert. Man hat also seine 2 Zahlen, welche ganzzahlig sind und positiv sein müssen. Jetzt nimmt man eine Primzahlen-Liste und nummeriert die Primzahlen (Im Programm könnte man das z.B. durch einen Array lösen). Die zu den beiden Zahlen dazugehörigen Primzahlen werden miteinander multipliziert und man erhält eine Zahl. Da ich denke, dass es etwas schlecht erklärt ist gibt's hier ein kleines Beispiel: Die beiden Zahlen seien 4 und 6. Primzahl-Liste: Nr 1 -> 2 Nr 2 -> 3 Nr 3 -> 5 Nr 4 -> 7 Nr 5 -> 11 Nr 6 -> 13 Daraus folgt, dass man 7 und 13 miteinander multiplizieren muss. Das Ergebnis: 91 Die 91 wäre dann die Zahl, welche ausgegeben wird. Und über Primfaktorzerlegung müsste man die ursprünglichen Primzahlen wieder herausfinden, welche dann anhand der Liste wieder in die Ausgangszahlen umgewandelt werden können. Ich bin mir nur nicht sicher ob das Ergebnis eindeutig ist, oder ob es noch eine zweite Möglichkeit gibt... Mit freundlichen Grüßen, Michael |
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Primfaktorzerlegung ist eindeutig, das Verfahren wäre theoretisch also machbar.
Das Problem dabei ist, dass die zugeordneten Primzahlen unverhältnismäßig groß würden und man so durch die Zusammenführung der beiden Werte nichts gewinnen würde. Außerdem dauert die Primfaktorzerlegung einfach zu lang(der Grund, weshalb RSA nicht geknackt werden kann). Und beim Suchen der x-ten Primzahl verhält sich das genauso(Natürlich in beiden Fällen erst bei Zahlen bestimmter Größenordnungen) |
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Und ausserdem kannst Du nicht sagen, welches die erste und welches die zweite Zahl war.
Gruss |
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Ich meinte garnicht Bit, sondern beschrieb in pseudo-Mathematik den Sachverhalt so das der pfiffige Fragesteller eigentlich selbst in der Lange sein müsste das auf 8Bit,16,32,64 oder meintewegen auch 1024 Bit, mit oder ohne Vorzeichen, zusammenzureimen.
Es ist egal wieviel Bit man als Datentyp hat, die Fragestellung war "wie kann man zwei Ganzzahlen, programmierdeutsch Integer, so kombinieren das man sie in einer anderen Zahl kodiert". Nun, dazu wählt man eine neue Zahlenbasis die so groß ist das alle seine zu kombinierenden Zahlen da rein passen. Dann multipliziert man seine zusammenzubauenden Zahlen mit Potenzen zu dieser Basis. Möchte man zb. 3 solcher Zahlen zwischen 0 bis 127 in eine Zahl packen wählen wir die Basis 128. R := A * 128^2 + B * 128^1 + C * 128^0; Und das beste daran ? Ganz einfache Mathemtik Klasse 4 oder 5 spätestens. Denn so funktionieren unsere Zahlen. Mag sich jetzt belehrerisch und arrogant anhören, vielleicht sogar sarkastisch, aber so ist es. Wir als Programmierer gewöhnen uns es allzuschnell an in unserer Sprache ein simples Problem zu beschreiben. Dabei benutzen wir aber garnicht die Basis der Informatik als Sprache, also die Mathematik, sondern wie Straßenjungen den Dialekt unserer Programmiersprache. Ich nehme mich da nicht aus in keinster Weise. Aber bestimmte Sachverhalte, eben wie die Zahlensysteme, müssen echt sitzen bei uns. Gruß Hagen |
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Zitat:
12 = 2*2*3 20 = 2*2*5 2*2*2*2*3*5 = 12 * 20 2*2*2*3 = 24 2*5 = 10 2*2*2*2*3*5 = 10 * 24 Gruß Hagen |
Re: 2 Integerwerte in einem Integerwert reversibel speichern
Nein. Er meinte, das die 12. und die 20. Primzahl miteinander multipliziert werden. Dann ist es selbstverständlich eindeutig (natürlich nicht bezüglich p*q=q*p). Allerdings werden die Zahlen sehr schnell sehr groß.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz