VI_shrVBI_shrVSI_shrVLI_shrVQI_shr 
VU_shrVUB_shrVUS_shrVUL_shrVUQ_shrVUI_shr
FunktionBit-weise Verschiebung nach rechts
Syntax C/C++#include <VImath.h>
void VI_shr( iVector Y, iVector X, ui size,unsigned C );
void VUL_shr( ulVector Y, ulVector X, ui size, unsigned C );

    (analog alle übrigen Funktionen dieser Familie)
C++ VecObj#include <OptiVec.h>
void vector<T>::shr( const vector<T>& X, unsigned C );
Pascal/Delphiuses VImath;
procedure VI_shr( Y, X:iVector; size:UIntSize; C:UInt );
procedure VUL_shr( Y, X:ulVector; size:UIntSize; C:UInt );

    (analog alle übrigen Funktionen dieser Familie)
CUDA-Funktion C/C++#include <cudaVImath.h>
int cudaVI_shr( iVector d_Y, iVector d_X, ui size, unsigned C );
int cudaVUL_shr( ulVector d_Y, ulVector d_X, ui size, unsigned C );
void VIcu_shr( iVector h_Y, iVector h_X, ui size, unsigned C );
void VULcu_shr( ulVector h_Y, ulVector h_X, ui size, unsigned C );
CUDA-Funktion Pascal/Delphiuses VImath;
function cudaVI_shr( d_Y, d_X:iVector; size:UIntSize; C:UInt ): IntBool;
function cudaVUL_shr( d_Y, d_X:ulVector; size:UIntSize; C:UInt ): IntBool;

procedure VIcu_shr( h_Y, h_X:iVector; size:UIntSize; C:UInt );
procedure VULcu_shr( h_Y, h_X:ulVector; size:UIntSize; C:UInt );
BeschreibungYi = Xi >> C
Alle Bits von Xi werden um so viele Positionen nach rechts geschoben wie im Parameter C angegeben. Dies entspricht einer Division durch 2C. Das Vorzeichen von Yi ist immer dasselbe wie von Xi. Im Unterschied zur "echten" Ganzzahl-Division wird das Ergebnis nicht in Richtung 0, sondern in Richtung "minus Unendlich" gerundet: -15 / 2 = -7, aber -15 >> 1 = -8. Durch Verschiebung von 8-bit-Zahlen (VBI_- und VUB_-Versionen) um mehr als 7 Positionen werden vorzeichenlose oder positive Zahlen in 0 überführt, während negative Zahlen -1 ergeben. Entsprechendes 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 Rechts-Verschiebung um negative C (sprich: eine Links-Verschiebung) ist daher nur durch Aufruf von VI_shl etc. möglich.
Fehlerbehandlungkeine
Rückgabewertkeiner
QuerverweisVI_divC,   VI_shl

VectorLib Inhaltsverzeichnis  OptiVec Home