| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2244 人关注过本帖
标题:位运算
取消只看楼主 加入收藏
爱是相反梦
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-12-23
结帖率:71.43%
收藏
已结贴  问题点数:15 回复次数:5 
位运算
题目:给定两个无符号整数m,n,如果m可以由n通过循环位移得到,就输出yes,否则输出no。

输入输出说明:

输入:
2 4
输出:
yes


m通过n循环位移得到这句话不理解,请大神指点一二,小弟感激不尽!
2017-01-01 00:54
爱是相反梦
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 3楼 九转星河
if (m>n)
    {
        n^=m;//交换数字
        m^=n;
        n^=m;
    }

版主,这里看不懂,怎么都是n,m换来换去的,跟三元交换不一样的,怎么换的??
2017-01-01 01:58
爱是相反梦
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 6楼 吹水佬
bits = 8 * sizeof(unsigned int);
这句是什么意思?为什么有个8?
2017-01-02 02:28
爱是相反梦
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 7楼 yangfrancis
感觉这个代码写得好,但看不懂digits函数的作用是什么
2017-01-02 02:36
爱是相反梦
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 8楼 九转星河
while (a)//获取数位
    {
        a<<=1;
        count++;
    }
问:当a=0时结束循环,a<<1是左移实现a=0;以二进制实现的,如a=5,二进制就是0000 0101 则a的数位就是3对吗?


    b<<=count-1;//获取最高位

    scanf("%u%u",&n,&m);//输入两个数

    while (count--)
    {
        if (n==m)
            break;
        if (n>=b)
        {
            n<<=1;
            n&=1;//这句语句起什么作用呢??

        }
        else
            n<<=1;
    }

    if (n==m)
        printf("Yes!\n");
    else
        printf("No!\n");

如果n,m的二进制是0010 1000和0001 0010  那只取最高位会不会有问题?? 还是我理解错了??
2017-01-02 02:48
爱是相反梦
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 13楼 吹水佬
谢谢
2017-01-02 19:24
快速回复:位运算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027752 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved