c语言左右循环移位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言左右循环移位
编写一函数用来实现左右循环移位。
函数名为move,调用方法为move(value,n); 其中value 为要循环位移的数,n 为位移的位数,
如n < 0 表示为左移; n > 0 为右移;如n = 4 表示要右移4 位,n = -3 表示要左移3 位。
代码如下:
#include unsigned short moveleft(unsigned short ,int); unsigned short moveright(unsigned short,int); int main(int argc, char *argv[]) { unsigned short a; int n; printf("input an octal number:"); scanf("%o",&a); printf("input n:"); scanf("%d",&n); if (n > 0) { printf("result:%o\n",moveright(a,n)); } else { n = -n; printf("result:%o\n",moveleft(a,n)); } system("pause"); } unsigned short moveleft(unsigned short value,int n) { unsigned short z; z = (value >> (16 - n)) | (value << n); return z; } unsigned short moveright(unsigned short value ,int n) { unsigned short z; z = (value >> n) | (value << (16 - n)); return z; }