C语言循环移位-C语言范例宝典50

循环移位与算术移位的区别

C语言移位
宏定义实现移位
已经介绍的很详细了,程序中遇到两个问题,一个是scanf与scanf_s的区别,貌似是VS为防止溢出,参见:
修改scanf设置

还有注意便是int类型所占的字节数在Turbo C和VS编辑器是不一样的。
也跟使用系统的位数有关X8or,X64;
具体占用,可用sizeof()命令打出来看,我是没记住,只记得字符是占一个字节的。

unsigned int right(unsigned value, unsigned int n) //循环右移
{
    unsigned z;
    z = (value >> n) | (value << (8*sizeof(value) - n));
    /*z = (value >> n) ;*/
    printf("sizeof(value)=%d\n", sizeof(value));
    return (z);


}
unsigned int left(unsigned value, int n) //循环左移
{
    unsigned z;
    z = (value << n) | (value >> (32 - n));
    return (z);


}
void main()
{
    /*int a = 45;
    int b = 30;
    int c = 0;
    c=gbs(b, a);
    printf("%d\n", c);*/
    unsigned a;
    int n;
    printf("please input a number:\n");
    scanf("%d", &a);
    printf("pleased input the number of displacement:\n");
    scanf("%d", &n);
    if (n > 0) {
        right(a, n);
        printf("the result is :%d\n", right(a, n));
    }
    else {
        n = -n;
        left(a, n);
        printf("the result is :%d\n", left(a, n));
    }

    while(1);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值