minishell/stdme/src/num/u16/rotate.c
2024-04-28 19:59:01 +02:00

29 lines
1.2 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* rotate.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/12/11 14:08:55 by maiboyer #+# #+# */
/* Updated: 2023/12/11 14:13:32 by maiboyer ### ########.fr */
/* */
/* ************************************************************************** */
#include "me/num/u16.h"
t_u16 u16_rotate_left(t_u16 value, t_usize by)
{
by &= sizeof(value) * 8 - 1;
if (by == 0)
return (value);
return ((value << by) | (value >> (sizeof(value) * 8 - by)));
}
t_u16 u16_rotate_right(t_u16 value, t_usize by)
{
by &= sizeof(value) * 8 - 1;
if (by == 0)
return (value);
return ((value >> by) | (value << (sizeof(value) * 8 - by)));
}