文章

40

粉丝

607

获赞

68

访问

400.5k

头像
1199 位作练习 c++
P1199 北京大学上机题
发布于2020年3月15日 14:36
阅读数 8.0k

#include <iostream>

using namespace std;

int main()
{
    int a, b, a1, a2;
    while (cin >> a >> b) {
        int flag = 0;//设立标志位
        if (a == b)
            flag = 1;
        else
            for (int i = 1; i < 16; i++) {
                a1 = a << i;//左移i位(低位用0填充)
                a2 = a >> (16 - i);//右移16-i位(高位用0填充)
                if ((a1 | a2) == b) {//按位或(有1为1否则为0)并判断是否相等
                    flag = 1;
                    break;
                }
            }
        cout << (flag == 1 ? "YES" : "NO") << endl;
    }
    return 0;
}

位运算

    位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。

位运算符有:

    &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。

    其中,按位取反运算符是单目运算符,其余均为双目运算符。

    位运算符的优先级从高到低,依次为~、&、^、|,

    其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。

 &n...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发