VI_shl | VBI_shl | VSI_shl | VLI_shl | VQI_shl | |
VU_shl | VUB_shl | VUS_shl | VUL_shl | VUQ_shl | VUI_shl |
|
Funktion | Bit-weise Verschiebung nach links |
|
Syntax C/C++ | #include <VImath.h>
void VI_shl( iVector Y, iVector X, ui size, unsigned C );
void VUL_shl( ulVector Y, ulVector X, ui size, unsigned C );
(analog alle übrigen Funktionen dieser Familie) |
C++ VecObj | #include <OptiVec.h>
void vector<T>::shl( const vector<T>& X, unsigned C ); |
Pascal/Delphi | uses VImath;
procedure VI_shl( Y, X:iVector; size:UIntSize; C:UInt );
procedure VUL_shl( Y, X:ulVector; size:UIntSize; C:UInt );
(analog alle übrigen Funktionen dieser Familie) |
|
CUDA-Funktion C/C++ | #include <cudaVImath.h>
int cudaVI_shl( iVector d_Y, iVector d_X, ui size, unsigned C );
int cudaVUL_shl( ulVector d_Y, ulVector d_X, ui size, unsigned C );
void VIcu_shl( iVector h_Y, iVector h_X, ui size, unsigned C );
void VULcu_shl( ulVector h_Y, ulVector h_X, ui size, unsigned C );
|
CUDA-Funktion Pascal/Delphi | uses VImath;
function cudaVI_shl( d_Y, d_X:iVector; size:UIntSize; C:UInt ): IntBool;
function cudaVUL_shl( d_Y, d_X:ulVector; size:UIntSize; C:UInt ): IntBool;
procedure VIcu_shl( h_Y, h_X:iVector; size:UIntSize; C:UInt );
procedure VULcu_shl( h_Y, h_X:ulVector; size:UIntSize; C:UInt );
|
|
Beschreibung | Yi = Xi << C
Alle Bits von Xi werden um so viele Positionen nach links geschoben wie im Parameter C angegeben. Dies entspricht einer Multiplikation mit 2C, wobei Überlauf in allen Versionen ebenso ignoriert wird wie Verlust des Vorzeichen-Bits (in den vorzeichenbehafteten Versionen).
Man beachte, dass eine Verschiebung von 8-bit-Zahlen (VBI_- und VUB_-Versionen) um mehr als 7 Positionen zum Verlust jeglicher ursprünglich vorhandener Bits ungleich 0 und somit zum Ergebnis 0 führt. Dasselbe gilt für die Verschiebung von 16-Bit-Zahlen (VSI_- und VUS_- Versionen) um mehr als 15 Positionen und für 32-Bit-Zahlen (VLI_- und VUL_-Versionen) bei Verschiebung um mehr als 31 Positionen.
C ist immer vom Datentyp unsigned/UInt. Eine Links-Verschiebung um negative C (sprich: eine Rechts-Verschiebung) ist daher nur durch Aufruf von VI_shr usw. möglich. |
|
|
|
|