【c语言】旋转右移

c语言实现旋转右移

题目

请编写宏BIT_ROTATE_RIGHT(n, b),实现将无符号整数n循环右移(从右端移出的位再从左端移入)b个二进制位。

代码实现

typeof unit unsigned int#define UNIT_BITS (sizeof(unit) << 3)
#define BIT_REMINDER(b) ((b) & (UINT_BITS - 1))
#define BIT_ROTATE_RIGHT(n, b) (((uint)(n)) >> BIT_REMINDER(b) | ((uint)(n) << (UINT_BITS - BIT_REMINDER(b))))

BIT_REMINDER(b)和b % UINT_BITS的结果是一致的,但效率更高。

你可能感兴趣的:(笔记)