_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、符号なしvalueをビット単位でshift回転_rotrします。 _rotl は値を左に回転させます。 _rotr は値を右に回転させます。 どちらの関数も、一方の端から他方の value 端に回転したビットをラップします。

必要条件

ルーチンによって返される値 必須ヘッダー
_rotl, _rotl64 <stdlib.h>
_rotr, _rotr64 <stdlib.h>

互換性の詳細については、「 Compatibility」を参照してください。

ライブラリ

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