7502fb74fe2192bafb8f7f856617b892f7563bd1
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
13 unsigned int _rotr( unsigned int value
, int shift
);
17 unsigned int _rotl( unsigned int value
, int shift
)
19 int max_bits
= sizeof(unsigned int)<<3;
21 return _rotr(value
,-shift
);
23 if ( shift
> max_bits
)
24 shift
= shift
% max_bits
;
25 return (value
<< shift
) | (value
>> (max_bits
-shift
));
31 unsigned int _rotr( unsigned int value
, int shift
)
33 int max_bits
= sizeof(unsigned int)<<3;
35 return _rotl(value
,-shift
);
37 if ( shift
> max_bits
<<3 )
38 shift
= shift
% max_bits
;
39 return (value
>> shift
) | (value
<< (max_bits
-shift
));
46 unsigned long _lrotl( unsigned long value
, int shift
)
48 int max_bits
= sizeof(unsigned long)<<3;
50 return _lrotr(value
,-shift
);
52 if ( shift
> max_bits
)
53 shift
= shift
% max_bits
;
54 return (value
<< shift
) | (value
>> (max_bits
-shift
));
60 unsigned long _lrotr( unsigned long value
, int shift
)
62 int max_bits
= sizeof(unsigned long)<<3;
64 return _lrotl(value
,-shift
);
66 if ( shift
> max_bits
)
67 shift
= shift
% max_bits
;
68 return (value
>> shift
) | (value
<< (max_bits
-shift
));