_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