#include <stdio.h>
/*
_lrotr()将一个无符号长整形数左循环移位的函数
原形:unsigned long _lrotr(unsigned long value,int count)
功能:将value向左循环移动count位。
返回值:将value向左循环移动count位后的值。
头文件:stdlib.h
*/
unsigned _rotl (unsigned val,int shift)
{
register unsigned hibit; /* non-zero means hi bit set */
register unsigned num = val; /* number to rotate */
shift &= 0x1f; /* modulo 32 -- this will also make
negative shifts work */
while (shift--) {
hibit = num & 0x80000000; /* get high bit */
num <<= 1; /* shift left one bit */
if (hibit)
num |=
C库源码中的移位函数
最新推荐文章于 2022-11-09 16:06:32 发布
这篇博客介绍了如何在C语言中实现无符号整数的左循环移位(_lrotl)和右循环移位(_lrotr)函数。通过内部调用_rotl和_rotr函数进行封装,确保移位操作在32位范围内进行,并处理了高位和低位的设置。示例代码展示了这两个函数的使用,以及它们在实际应用中的效果。
摘要由CSDN通过智能技术生成