C语言中的位操作与预处理器
位操作
在C语言里,位操作能够让我们对数据的二进制位进行高效且灵活的处理。下面为大家详细介绍位操作中的循环移位和位域相关内容。
循环移位
循环移位函数会先确保移位计数 n 是有效的。以下是相关代码:
if ( n > 0 )
n = n % 32;
else
n = -(-n % 32);
上述代码首先检查 n 是否为正数。若为正数,就计算 n 对 int 类型大小(此例中假定为32)取模的结果,并将其存回 n ,使移位计数处于0到31的范围。若 n 为负数,在应用取模运算符之前先对其取反,这是因为C语言未定义对负数应用取模运算符结果的符号,先取反能保证结果为正,再应用一元负号运算符使其再次变为负数,即处于 -31到0的范围。
若调整后的移位计数为0,函数会直接将 value 赋值给 result ;否则,就进行循环移位操作。
左循环移位 n 位的操作可分为三个步骤:
1. 提取 value 最左边的 n 位并右移,具体做法是将 value 右移 int 类型大小(这里是32)减去 <
超级会员免费看
订阅专栏 解锁全文
1215

被折叠的 条评论
为什么被折叠?



