Startseite › Datentypen › Breite Integer-Typen Hilfe zum PBXB64-Compiler

Wide Integer-Typen (INT128/256/512)

PBXB64 fügt Wide-Integer-Typen mit fester Breite über den Standard 8/16/32/64-Bit hinaus hinzu Bereich. Diese Typen werden mit nativem Inline-x64-Code für Arithmetik implementiert. bitweise und Vergleichsoperationen – keine Laufzeitbibliotheksaufrufe für das Hot Wege. Sie werden für Kryptografie, Hashing, große Zähler und wissenschaftliche Zwecke verwendet Berechnen, wo sonst ein 64-Bit-Überlauf auftreten würde.

Kategorie: Breite Integer-Typen | Zertifizierung: [ZERTIFIZIERT GETESTET]

Beschreibung

PBXB64 fügt Wide-Integer-Typen mit fester Breite über den Standard 8/16/32/64-Bit hinaus hinzu Bereich. Diese Typen werden mit nativem Inline-x64-Code für Arithmetik implementiert. bitweise und Vergleichsoperationen – keine Laufzeitbibliotheksaufrufe für das Hot Wege. Sie werden für Kryptografie, Hashing, große Zähler und wissenschaftliche Zwecke verwendet Berechnen, wo sonst ein 64-Bit-Überlauf auftreten würde.

Typ: Datentypfamilie | Kategorie: Numerische Typen

PBXB64-Status: AVAILABLE

PBXB64-Zertifizierung: [ZERTIFIZIERT GETESTET]

Unterstützte Typen

TypAliasGrößeSigniertReichweiteDezimalstellen
INT128I12816 Byteja-2^127 .. 2^127-1~38
UINT128U12816 ByteNein0 .. 2^128-1~39
INT256I25632 Byteja-2^255 .. 2^255-1~77
UINT256U25632 ByteNein0 .. 2^256-1~78
INT512I51264 Byteja-2^511 .. 2^511-1~154
UINT512U51264 ByteNein0 .. 2^512-1~155

Lagerlayout

Wide-Ganzzahlen werden in Little-Endian-Bytereihenfolge im zusammenhängenden Speicher gespeichert. INT128/UINT128 belegen 16 Bytes (zwei 64-Bit-Teile); INT256/UINT256 belegen 32 Bytes (vier Glieder); INT512/UINT512 belegen 64 Bytes (acht Glieder). Einheimische sind auf 16 Bytes stapelorientiert.

Unterstützte Operationen

KategorieOperationenHinweise
Arithmetik+, -, *, \ (int div), MOD128-Bit-Multifunktionsanwendungen mul/imul mit adc; 256/512 nutzen Schulbuch.
BitweiseAND, OR, XOR, NOTGehen Sie Glied für Glied vor.
SchichtenSHL, SHR, SARVerwendenshld/shrd für Querverlagerungen.
Vergleich=, <>, <, <=, >, >=Rückgaben -1 (wahr) / 0 (falsch).
Konvertierungnach/von STRING, QUAD, LONGAnalyse/Formatierung von Dezimalzeichenfolgen.

Deklaration und Verwendung

LOCAL a AS INT128
LOCAL b AS U128
LOCAL c AS INT256
LOCAL d AS UINT512

a = 2^100              ' fits in INT128 (max ~3.4e38)
b = 2^128 - 1          ' largest UINT128
c = a * a              ' 2^200, still fits in INT256
d = c * c              ' 2^400, fits in INT512

PRINT a                ' decimal string output
IF a > b THEN PRINT "a is bigger"

Wann sollten breite Ganzzahlen im Vergleich zu UNL verwendet werden?

BrauchenBenutzenWarum
Feste Breite, bekannte Grenze ≤ 512 BitINT128..UINT512Schneller: keine Zuordnung, keine Längenverfolgung, Inline-Assembly.
Unbegrenzte GrößeUNLWächst nach Bedarf; langsamer pro Operation, aber nie ein Überlauf.
Kryptografisches 256-Bit (z. B. secp256k1)UINT256Exakte Passform, konstante Zeitfähigkeit.
SHA-512-ZwischenzuständeUINT512Entspricht der nativen Breite des Algorithmus.

Beziehung zu QUAD und CURRENCY

QUAD (64-Bit-signiert) ist der größte Standard PBXB64 Ganzzahl. Die breiten Typen erstrecken sich nach oben QUAD:

QUAD (64-bit) < INT128 (128-bit) < INT256 (256-bit) < INT512 (512-bit)
                      |
                      +-- UNL (unbounded, grows dynamically)

Typ- und Speicherprüfung

Typ- und Variablenseiten sollen Breite, Vorzeichen, Initialisierung, Gültigkeitsbereich, Suffixregeln und x64-Layout dokumentieren. Beispiele sollen gespeicherten Wert, ausgelesenen Wert und Konvertierungs- oder Überlaufverhalten belegen.

Deklarationsregeln

Nennen Sie, ob Deklarationen #DIM ALL, AS-Klauseln, Suffixe oder ausdrückliche Sichtbarkeit benötigen. Trennen Sie lokalen, statischen, globalen und thread-lokalen Speicher.

Migrationshinweise

Prüfen Sie Pointer-, Handle- und LONG-Annahmen beim Wechsel von 32-Bit-PB-Code zu PBXB64.

Umfangshinweise

Wenn eine Seite mehrere verwandte Formen gruppiert, sollte sie sagen, welche Form die Speicherbreite festlegt, welche nur die Deklarationssyntax ändert und welche nur historischen Charakter hat. Eine kleine Zuordnung von Familienbegriff zu den konkreten Typseiten macht die Seite beim Portieren deutlich nützlicher.

Siehe auch