TeganZayne


私信TA

用户名:Tegan

访问量:6143

签 名:

努力一定会成功

等  级
排  名 3471
经  验 1851
参赛次数 0
文章发表 9
年  龄 20
在职情况 学生
学  校 东大国际
专  业

  自我简介:

解题思路:左(右)移时判断最高(低)位的值,为1则移位后在最低(高)位写入1,否则只移位

注意事项:

参考代码:

#include <stdio.h>

unsigned int move(unsigned int value,int n)
{
    if(n<0)
    {
        while(n++)
        {
            if(value&0x80000000)//最高位为1
            {
                value*=2;//左移1位
                value|=0x00000001;//按位或将末位写入1
            }
            else
            {
                value*=2;//否则只左移
            }
        }
    }
    else if(n>0)
    {
        while(n--)
        {
            if(value&0x00000001)//末位为1
            {
                value/=2;//右移1位
                value|=0x10000000;//按位或最高位写入1
            }
            else
            {
                value/=2;//否则只右移
            }
        }
    }
    return value;
}

int main()
{
    unsigned int val;
    int n;
    scanf("%u %d",&val,&n);
    val=move(val,n);
    printf("%u\n",val);
    return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区