Share via


Int64ShraMod32-Makro (winnt.h)

Führt einen rechtsarithmetischen Verschiebungsvorgang für einen 64-Bit-Ganzzahlwert mit Vorzeichen aus. Die Funktion bietet verbesserten Verschiebungscode für arithmetische Verschiebungen nach rechts, bei denen die Schichtanzahl im Bereich von 0 bis 31 liegt.

Syntax

void Int64ShraMod32(
  [in]  a,
  [in]  b
);

Parameter

[in] a

Die zu verschiebende 64-Bit-Ganzzahl mit Vorzeichen.

[in] b

Die Schichtanzahl im Bereich 0-31.

Rückgabewert

Keine

Bemerkungen

Die Schichtanzahl ist die Anzahl der Bitpositionen, die die Bits des Werts verschieben.

Bei einem rechtsarithmetischen Verschiebungsvorgang für einen vorzeichenierten Wert werden die Bits des Werts nach rechts verschoben, und frei werdende Bits auf der linken Seite des Werts auf den Wert des Vorzeichenbits festgelegt.

Ein Compiler kann optimalen Code für einen rechten arithmetischen Verschiebungsvorgang generieren, wenn die Schichtanzahl eine Konstante ist. Wenn die Schichtanzahl jedoch eine Variable ist, deren Wertebereich unbekannt ist, muss der Compiler den schlimmsten Fall annehmen, was zu nicht optimalem Code führt: Code, der eine Unterroutine aufruft, oder Code, der inline ist, aber verzweigt ist. Indem die Anzahl der Schichten auf den Bereich 0 bis 31 beschränkt wird, ermöglicht die Int64ShraMod32-Funktion dem Compiler, optimalen oder nahezu optimalen Code zu generieren.

Beachten Sie, dass der Value-Parameter und der Rückgabewert der Int64ShraMod32-Funktion 64-Bit-Werte und keine LARGE_INTEGER Strukturen sind.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winnt.h (windows.h einschließen)

Weitere Informationen

Int64ShllMod32

Int64ShrlMod32

Große ganze Zahlen