AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenes Zahlensystem -> Performance

Ein Thema von Meflin · begonnen am 15. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 18:39
Aloa!

Ich habe mir ein kleines Zahlensystem entwickelt, so ähnlich wie IPs aufgebaut sind. Jede "Zahl" besteht aus einer Anzahl von Gliedern.
0.0.0.0 Jedes dieser Glieder kann einen maximalen Wert annehmen, wobei der maximale Wert von Glied zu Glied unterschiedlich sein kann, also wäre eine "größte Zahl" beispielsweise:
3.36.5.78 Erhöht man den Wert dieser "Zahl" um 1, so wird zuerst das rechteste Glied um eins erhöht. Sollte es bereits seinen Maximalwert haben, wird das Glied links davon um eins erhöht und das rechte wieder auf 0 bzw den Anfangswert gesetzt. Gibt es kein Element mehr links davon, wird ein neues angefügt oder falls ein vorher festgelegter Maximalgliedwert definiert wurde bleibt das Glied einfach auf Maximalwert.

ein Zahlenbereich mit dem Teilmaximalwert von 30 und 6 Gliedern ginge also von
0.0.0.0.0.0 bis
30.30.30.30.30.30 und würde 427.518.000 verschiedene "Zahlen" beinhalten.

Nun zur eigentlichen Frage:
1. Gibt es sowas eigentlich und wenn ja, wie tauft es sich
2. Wie lässt sich eine Werterhöhung am performantesten durchführen? Ich hätte spontan an eine rekursive Funktion gedacht, die sind aber meistens vergleichsweise ineffizient.

Ich hoffe auf eure Anregungen

  Mit Zitat antworten Zitat
Flo85

Registriert seit: 25. Apr 2006
23 Beiträge
 
#2

Re: Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 19:04
Ich hätte jetzt grob gesagt das es das schon gibt

z.b. wenn du nur bis 16(oder besser gesagt 0-15) gehst und die punkt weg läst und sagst das ein zeichen das ist was bei dir zwischen den punkten steht wäre das das hexadezimale zahlensystem.

Deins ist dan etwas universeller!

mfg

Flo85
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#3

Re: Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 19:39
Also wenn die Grenzen 365.24.60.60.1000 wären, dann ist es unser Zeitsystem
Ich würde das so erhöhen:
Delphi-Quellcode:
milli := milli + 1
if milli>1000 then
begin
  milli := 0;
  sek := sek + 1;
  if sek>60 then
  begin
    sek := 0;
    min := min + 1;
...
Nur weiß ich nicht ob es effizienter ist.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#4

Re: Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 19:54
Zitat von Meflin:
1. Gibt es sowas eigentlich und wenn ja, wie tauft es sich
Ich würde es als "ziemlich krank" bezeichnen, vielleicht gibt es das unter diesem Namen schon.

Zitat von Meflin:
2. Wie lässt sich eine Werterhöhung am performantesten durchführen? Ich hätte spontan an eine rekursive Funktion gedacht, die sind aber meistens vergleichsweise ineffizient.
Sowas implementiert sich am performantesten in Hardware. In Software würde ich iterativ addieren, solange es einen Übertrag gibt (Pseudocode):
Code:
Funktion Add(Wert1, Wert2, Übertrag = 0)
{
  segment = 0;
  wiederhole
  {
    Wert1[segment] = Wert1[segment] + Wert2[segment] + Übertrag;
    Übertrag = Wert1[segment] / maximalwert(Wert1[segment]);
    Wert1[segment] = Wert1[segment] % maximalwert(Wert1[segment]);
    segment++;
  } bis Übertrag = 0;
}
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 20:09
Was mir gerade eben einfällt. Dieses "Zahlensystem" ist doch garantiert nur für irgendeine Anzeige gedacht, oder sehe ich das falsch?
Wenn dem so sei, dann kannst du ja eine Funktion schreiben, die einen Integer-Wert (wenn der dir zu klein ist eben Int64) in dieses Format umwandelt und rechnen tust du mit dem Integer, das dürfte (auf Software-Ebene) das schnellste sein.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 20:14
Wo soll den später der Vorteil eines solchen Systems liegen? Ich sehe ihn nicht weder Addition, Multiplikation oder in der Anzeige oder bei inc/dec. Wo liegt der Vorteil?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Eigenes Zahlensystem -> Performance

  Alt 15. Mai 2006, 20:25
Zitat von Nicolai1605:
Wo soll den später der Vorteil eines solchen Systems liegen? Ich sehe ihn nicht weder Addition, Multiplikation oder in der Anzeige oder bei inc/dec. Wo liegt der Vorteil?
Naja, das System ist auch nicht wirklich zum rechnen gedacht, es erfüllt schon seinen Zweck - und zwar verdammt gut. hoffe ich zumindest aber darum soll es hier ja auch nicht wirklich gehen

Zitat von Flare:
Was mir gerade eben einfällt. Dieses "Zahlensystem" ist doch garantiert nur für irgendeine Anzeige gedacht, oder sehe ich das falsch?
Das siehst du nicht ganz falsch, aber einfaches "rechnen" mit integern hilft mir nicht wirklich weiter.

@Frickeldrecktuxer: danke, werde es mir mahl zu Gemüte führen

Sobald das Produkt fertig ist bekommt ihr es hier in der DP sowieso zu sehen, also Geduld

  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Eigenes Zahlensystem -> Performance

  Alt 16. Mai 2006, 09:05
Gibt es tatsächlich schon (zumindest ohne die Punkte, die aber ja auch nicht wirklich neue Information hinzufügen), nennt sich Stellenwertsystem. Wenn alle Stellen die gleiche Wertigkeit (sprich: gleiche Obergrenze) haben, spricht man von einem polyadischen Zahlensystem.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Eigenes Zahlensystem -> Performance

  Alt 16. Mai 2006, 10:26
Zitat von Meflin:
1. Gibt es sowas eigentlich und wenn ja, wie tauft es sich
Ja, sowas gibt es schon. Das nett sich b-adisches Zahlensystem. Nur die Punkte sind neu, die lässt man meistens weg. Das funktioniert bei dir allerdings nicht, weil man dann die Stellen nicht mehr unterschieden kann

Dein Alphabet sieht so aus: [SUMME]31 := {0, 1, . . ., 30}

Besser wäre [SUMME]31 := {0, 1, . . , 9, A, B, . . . U} (Spart dir die Punkte => "normales" Zahlensystem)

Gängige Zahlensysteme sind z.B.:
[SUMME]2 := {0,1} Dual-System
[SUMME]10 := {0,1, . . .,9} Dezimalsystem
[Summe]16 := {0,1, . . .,9, A, B, . . ., F} Hexadezimalsystem

Im grunde hast du also nichts neues erfunden

[Edit: Hab nicht gelesen, das einzelne Glieder unterschiedlich groß sind, dann ist es natürlich kein adisches Zahlensystem mehr]

Gruß
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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