2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/msvcrt/stdlib/rot.c
5 * PURPOSE: Performs a bitwise rotation
16 unsigned int _rotl( unsigned int value
, int shift
)
18 int max_bits
= sizeof(unsigned int)<<3;
20 return _rotr(value
,-shift
);
22 if ( shift
> max_bits
)
23 shift
= shift
% max_bits
;
24 return (value
<< shift
) | (value
>> (max_bits
-shift
));
30 unsigned int _rotr( unsigned int value
, int shift
)
32 int max_bits
= sizeof(unsigned int)<<3;
34 return _rotl(value
,-shift
);
36 if ( shift
> max_bits
<<3 )
37 shift
= shift
% max_bits
;
38 return (value
>> shift
) | (value
<< (max_bits
-shift
));
45 unsigned long _lrotl( unsigned long value
, int shift
)
47 int max_bits
= sizeof(unsigned long)<<3;
49 return _lrotr(value
,-shift
);
51 if ( shift
> max_bits
)
52 shift
= shift
% max_bits
;
53 return (value
<< shift
) | (value
>> (max_bits
-shift
));
59 unsigned long _lrotr( unsigned long value
, int shift
)
61 int max_bits
= sizeof(unsigned long)<<3;
63 return _lrotl(value
,-shift
);
65 if ( shift
> max_bits
)
66 shift
= shift
% max_bits
;
67 return (value
>> shift
) | (value
<< (max_bits
-shift
));