共用方式為


_rotl、 、 _rotl64_rotr_rotr64

將位元向左 (_rotl) 或向右 (_rotr) 旋轉。

語法


unsigned int _rotl(
   unsigned int value,
   int shift
);
unsigned __int64 _rotl64(
   unsigned __int64 value,
   int shift
);
unsigned int _rotr(
   unsigned int value,
   int shift
);
unsigned __int64 _rotr64(
   unsigned __int64 value,
   int shift
);

參數

value
要旋轉的值。

shift
要移位的位元數。

傳回值

旋轉的值。 不會傳回錯誤。

備註

和函_rotl式會以位旋轉shift不帶正負號value_rotr _rotl 會將值向左旋轉。 _rotr 會將值向右旋轉。 這兩個函式都會將位換成一端的旋轉至另一端 value

需求

常式 必要的標頭
_rotl, _rotl64 <stdlib.h>
_rotr, _rotr64 <stdlib.h>

如需相容性詳細資訊,請參閱相容性

程式庫

所有版本的 C 執行階段程式庫

範例

// crt_rot.c
/* This program shifts values to rotate an integer.
*/

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   unsigned val = 0x0fd93;
   __int64 val2 = 0x0101010101010101;

   printf( "0x%4.4x rotated left three times is 0x%4.4x\n",
           val, _rotl( val, 3 ) );
   printf( "0x%4.4x rotated right four times is 0x%4.4x\n",
           val, _rotr( val, 4 ) );

   printf( "%I64x rotated left three times is %I64x\n",
           val2, _rotl64( val2, 3 ) );
   printf( "%I64x rotated right four times is %I64x\n",
           val2, _rotr64( val2, 4 ) );
}

輸出

0xfd93 rotated left three times is 0x7ec98
0xfd93 rotated right four times is 0x30000fd9
101010101010101 rotated left three times is 808080808080808
101010101010101 rotated right four times is 1010101010101010

另請參閱

數學與浮點支援
_lrotl, _lrotr