#如果!定义的HAVE_BITROTATE_H__#定义HAVE_BITROTATE_H__//此文件是FXT库的一部分。//版权所有(C)20102012 Joerg Arndt//许可证:GNU通用公共许可证版本3或更高版本,//请参阅主目录中的文件COPYING.txt。#包括“fxttypes.h”#包括“bits/bitsperlong.h”#包括“bits/bitasm.h”静态内联ulong bit_rotate_left(ulong x,ulong r)//返回字向左旋转r位//(即朝向最高有效位)//.//GCC将函数优化为asm“滚动%cl,%ebx”{#如果定义了BITS_USE_ASM返回asm_rol(x,r);#其他//r&=(BITS_PER_LONG-1);//模字长返回(x<>(BITS_PER_LONG-r));#结尾}//-------------------------静态内联ulong bit_rotate_right(ulong x,ulong r)//返回字向右旋转r位//(即朝向最低有效位)//.//GCC将函数优化为asm“errl%cl,%ebx”{#如果定义了BITS_USE_ASM返回asm_ror(x,r);#其他//r&=(BITS_PER_LONG-1);//模字长返回(x>>r)|(x<<(BITS_PER_LONG-r));#结尾}//-------------------------静态内联ulong bit_rotate_sgn(ulong x,long r)//正r-->从元素零移开{如果(r>0)返回位rotate_left(x,(ulong)r);否则返回bit_rotate_right(x,(ulong)-r);}//-------------------------静态内联ulong bit_rotate_left(ulong x、ulong r、ulong n)//将n位字旋转r位返回到左侧//(即朝向最高有效位)//必须有0<=r<=n{ulong m=~0UL>>(BITS_PER_LONG-n);x&=米;x=(x<>(n-r));x&=米;返回x;}//-------------------------静态内联ulong bit_rotate_right(ulong x、ulong r和ulong n)//将n位字旋转r位返回到右侧//(即朝向最低有效位)//必须有0<=r<=n{ulong m=~0UL>>(BITS_PER_LONG-n);x=m;x=(x>>r)|(x<<(n-r));x&=米;返回x;}//-------------------------静态内联ulong bit_rotate_sgn(ulong x,long r,ulong n)//正r-->从元素零移开{如果(r>0)返回位rotate_left(x,(ulong)r,n);否则返回bit_rotate_right(x,(ulong)-r,n);}//-------------------------#endif//!定义的HAVE_BITROTATE_H__