BigInteger Fehler ?

  • VB.NET
  • .NET 5–6

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

    BigInteger Fehler ?

    Hallo Community

    Könnt Ihr das bestätigen?

    Ich bin jetzt schon eine volle Stunde am Suchen, und jetzt habe ich glaube ich den Fehler gefunden.

    BigInteger gibt hier einen Fehler aus. Da sollte doch wieder 123 ergeben und nicht 0.

    VB.NET-Quellcode

    1. ​Private Sub TestBigInteger()
    2. Dim i32 = 128
    3. Dim bigint = New BigInteger(123)
    4. Dim result = (bigint << i32) Mod (BigInteger.One << 128)
    5. Stop
    6. End Sub



    Freundliche Grüsse

    exc-jdbi
    @exc-jdbi Ich hab das ganze mal übertragen und da kommt auch 0 raus:

    VB.NET-Quellcode

    1. Private Sub TestLong()
    2. Dim i32 = 12
    3. Dim bigint = 123L
    4. Dim result = (bigint << i32) Mod (1 << 12)
    5. Stop
    6. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Gut das könnte hinhauen, da du im Long-Datentyp drin bist.

    503808 mod 4096 = 0


    EDIT: Ach ich hab jetzt einen kleinen Überlegungsfehler gemacht.
    BigInteger gibt das natürlich richtig aus.
    Da die Berechnung ja eigentlich so heisst.
    (123 * (1 << 128 )) mod (1 << 128)

    und das muss wieder 0 ergeben, da der linke Teil
    (123 * (1 << 128 )) ein vielfaches von (1 << 128) ist.
    Sorry mein Fehler, da war ich wohl ein bisschen zu voreilig.

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