2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/sdk/crt/stdlib/rot.c
5 * PURPOSE: Performs a bitwise rotation
14 #pragma function(_rotr, _rotl, _rotr, _lrotl, _lrotr)
17 unsigned int _rotr( unsigned int value
, int shift
);
21 unsigned int _rotl( unsigned int value
, int shift
)
23 int max_bits
= sizeof(unsigned int)<<3;
25 return _rotr(value
,-shift
);
27 if ( shift
> max_bits
)
28 shift
= shift
% max_bits
;
29 return (value
<< shift
) | (value
>> (max_bits
-shift
));
35 unsigned int _rotr( unsigned int value
, int shift
)
37 int max_bits
= sizeof(unsigned int)<<3;
39 return _rotl(value
,-shift
);
41 if ( shift
> max_bits
<<3 )
42 shift
= shift
% max_bits
;
43 return (value
>> shift
) | (value
<< (max_bits
-shift
));
50 unsigned long _lrotl( unsigned long value
, int shift
)
52 int max_bits
= sizeof(unsigned long)<<3;
54 return _lrotr(value
,-shift
);
56 if ( shift
> max_bits
)
57 shift
= shift
% max_bits
;
58 return (value
<< shift
) | (value
>> (max_bits
-shift
));
64 unsigned long _lrotr( unsigned long value
, int shift
)
66 int max_bits
= sizeof(unsigned long)<<3;
68 return _lrotl(value
,-shift
);
70 if ( shift
> max_bits
)
71 shift
= shift
% max_bits
;
72 return (value
>> shift
) | (value
<< (max_bits
-shift
));