C语言循环移位操作

C语言里有移位操作,但没有循环移位操作。

举例,对一位数为8的数a,进行循环左移与右移的操作如下:

unsigned char a,b;
a = 0x0f;
b = a>>(8-3);    /* 补偿左移丢失的位 */
a = a<<3;
a = a | b;     /* 循环左移3位 */

即循环左移3位操作为:a = (a<<3) | (a>>(8-3));

右移3位为:a = (a>>3) | (a<<(8-3));

故对一位数为N的数a进行循环移位i(i<=N) 为:

循环左移   a = (a>>i) | (a<<(N-i));

循环右移   a = (a<<i) | (a>>(N-i));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值