UIntX - UI128 / I128 - UI256 / I256 - UI512 / I512

    • Beta
    • Closed Source

    Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

      UIntX - UI128 / I128 - UI256 / I256 - UI512 / I512

      Hallo Community

      Ich habe mir kurz die Zeit genommen die UI128 / I128 Struct in .Net 6.0 zu programmieren.

      Die wichtigsten Operationen sind schon mal drin. Weitere können gerne noch selber nachgefügt werden.

      Vorläufig gibt es Sie nur als Binary. Den Code werde ich aber auch noch einfügen, jedoch später.


      Freundliche Grüsse

      exc-jdbi


      Name:

      UIntX 2022

      Besteht aus:

      I128 Signed Datentype 16 Byte
      UI128 Unsigned Datentype 16 Byte



      Verwendete Programmiersprache(n) und IDE(s):

      Visual Studio: 2022
      Dll: .Net 6.0 - C#
      Test-Konsole: .Net 6.0 - C# / VB.NET

      Systemanforderungen:

      Windows 10

      Lizenz/Weitergabe:

      Freeware; Closed
      Darf beliebig weitergegeben werden. Code folgt noch.

      Anwendung:

      Siehe Test-Konsole.

      UIntX bzw. UI128 / I128 kann verwendet werden wie eine normaler primitiver Datentyp , wird jedoch von VS nicht als Primitive erkannt.

      In I128 wird nichts gerechnet, und ist immer eine Dezimale-Repräsentation von UI128. Damit das funktioniert, wird UI128 als 2-Komplement herangezogen.

      Das kann man sich so vorstellen. Von 0 - 2^127-1 sind die ganz normalen positiven Zahlen, die I128 auch verwendet. Die Zahlen in UI128 von 2^127 - 2^128-1 sind die negativen Zahlen von I128.

      Bemerkung

      Die hier vorgestellten Datentypen sind nach alter "Tradition" aufgebaut, wobei ich hier auch den BigInteger für die Konvertierungen (nicht aber für die Mathematik selber) und teils Prüfungen der oberen wie auch der unteren Grenzen hinzugezogen habe.

      Wer sich selber solche Datentypen, jedoch ohne BigInteger machen möchte, dem empfehle ich den BigInteger wirklich erst am Schluss einzubauen. Es wäre genau der gleiche Aufbau wie bei mir, jedoch mit ein paar wenigen Methoden mehr, die die Nutzung des BigInteger schlussendlich erübrigen.

      Mit der neuen Framwork-Version können solche Konstrukte dann mit der "Generic Math" gelöst werden.
      devblogs.microsoft.com/dotnet/dotnet-7-generic-math/

      Ich selber bin schon ganz gespannt darauf, was das neue Werkzeug UInt128 / I128 alles bietet, und wie die Laufeigenschaften sind.
      learn.microsoft.com/de-de/dotnet/api/system.int128
      learn.microsoft.com/de-de/dotnet/api/system.uint128


      UPDATE:

      - UIntX_V1.zip Version 1.0.0.1, neu mit UI256 / I256.
      - UIntX_V2.zip Version 1.0.0.1, neu mit UI256 / I256 - UI512 / I512.



      Dateien
      • UIntX_V2.zip

        (528,08 kB, 291 mal heruntergeladen, zuletzt: )
      • UIntX.zip

        (344,12 kB, 100 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „exc-jdbi“ ()

      Genau. Die hat dann noch ein paar Funktionen mehr.

      Es geht aber trotzdem nicht daraus hervor ob es dann für .net6.0 Projekte genutzt werden kann. Wahrscheinlich schon.
      Die hat dann noch bessere Möglichkeiten, vor allem kann mit checked/unchecked (bei mir muss es eingestellt werden) gearbeitet werden, und die nächste Version soll Neuerungen bringen, in Sachen Vererbung und Implementierung.

      Anmerkung: Der Aufbau meiner Version habe ich teils genau von dort (dein Link) abgeschaut.


      Freundliche Grüsse

      exc-jdbi

      UPDATE Version 1.0.0.1

      © UIntX 2022 Version 1.0.0.1, neu mit UI256 / I256.

      Eingefügt in #1

      ClassDiagramV1.png

      Beta-Version. Ein sehr ausführlicher Test ist gemacht worden.

      Feedbacks und konstruktive Anmerkungen immer gerne willkommen. Danke.

      Freundliche Grüsse

      exc-jdbi

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „exc-jdbi“ ()

      UPDATE Version 1.0.0.2

      © UIntX 2022 Version 1.0.0.2, neu mit UI256 / I256 - UI512 / I512.

      Eingefügt in #1

      Beta-Version. Test ist gemacht worden.



      Feedbacks und konstruktive Anmerkungen immer gerne willkommen. Danke.

      Freundliche Grüsse

      exc-jdbi

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()