TeganZayne


私信TA

用户名:Tegan

访问量:6081

签 名:

努力一定会成功

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

  自我简介:

解题思路:把数当成2进制即可,该数对2取模即可得到当前末位为1或为0。取模后将该数除以2相当于右移1位,空出首位。利用之前取模的结果,若为1,则将右移了1位的数与0x80000000按位或,相当于把之前末位的1写入新数的首位。取模为0不用管

注意事项:

参考代码:

#include <stdio.h>
int main()
{
    unsigned int a,n,i;
    scanf("%u %u",&a,&n);
    while(n--)
    {
        i=a%2;//把a当作二进制,所以对2取模看看末位是否为1
        a/=2;//把a右移1位,空出首位
        if(i==1)//原数末位为1
        {
            a|=0x80000000;//和1000 0000 0000 0000 0000 0000 0000 0000按位或操作,可把之前末位的1写到新数的首位而其他位不变
        }
    }
    printf("%u\n",a);
    return 0;
}


 

0.0分

4 人评分

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

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

请问大佬 为啥0x80000000是1000 0000 0000 0000 0000 0000 0000 0000,基础有点差不好意思
2020-03-02 23:10:28
  • «
  • 1
  • »