(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.

__shiftleft128

[Diese Dokumentation ist nur eine Vorschau und wird in späteren Versionen ggf. geändert. Blank topics are included as placeholders.]

Microsoft-spezifisch

Verschiebt eine 128-Bit-Menge, dargestellt als zwei 64-Bit-Mengen LowPart und HighPartvon einigen Bits nach links vom Shift angegeben wurden, und gibt die oberen 64 Bits das Ergebnis zurück.


          
unsigned __int64 __shiftleft128( 
   unsigned __int64 LowPart, 
   unsigned __int64 HighPart, 
   unsigned char Shift 
);
        

[in] LowPart

Die unteren 64 Bits der 128-Bit-Menge zu verschieben.

[in] HighPart

Die oberen 64 Bits der 128-Bit-Menge zu verschieben.

[in] Shift

Die Anzahl der Bits verschoben werden soll.

Die oberen 64 Bits des Ergebnisses.

Intrinsisch

Architektur

__shiftleft128

IPF, x64

Headerdatei <intrin.h>

Der Shift-Wert ist immer Modulo 64, sodass z. B. wenn Sie __shiftleft128(1, 0, 64)aufrufen, die Funktion die gelassenen 0 Bits unzureichenden Parts und richtet einen hohen Teil von 0 und nicht 1 zurückgibt, z. B. Legt andernfalls erwartet wird.

// shiftleft128.c
// processor: IPF, x64
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic (__shiftleft128, __shiftright128)


int main()
{
    unsigned __int64 i = 0x1I64;
    unsigned __int64 j = 0x10I64;
    unsigned __int64 ResultLowPart;
    unsigned __int64 ResultHighPart;

    ResultLowPart = i << 1;
    ResultHighPart = __shiftleft128(i, j, 1);

    // concatenate the low and high parts padded with 0's
    // to display correct hexadecimal 128 bit values
    printf_s("0x%02I64x%016I64x << 1 = 0x%02I64x%016I64x\n",
             j, i, ResultHighPart, ResultLowPart);

    ResultHighPart = j >> 1;
    ResultLowPart = __shiftright128(i, j, 1);

    printf_s("0x%02I64x%016I64x >> 1 = 0x%02I64x%016I64x\n",
             j, i, ResultHighPart, ResultLowPart);  
}
          0x100000000000000001 << 1 = 0x200000000000000002
0x100000000000000001 >> 1 = 0x080000000000000000
        
Anzeigen:
© 2014 Microsoft