【luogu题解】T378828 位运算
  HiNug2AQfSLq 2023年11月27日 31 0
C++

位运算

题目背景

题目由 daiyulong20120222 创作(me)

并由
QBW1117完善以及数据 。

题目描述

给定两个数\(x,y\) ,在给定一个位运算符号 \(c\)

请你列出 \(x,y\) 进行 \(c\) 位运算是的算数竖式式。

注:

  1. 竖式这么列:

    • 显示出两个数的完整二进制,包括前导零。

    • 32个 '-'。

    • 显示出 \(ans\) ,包括前导零。

  2. 位运算符号可能是:

    • &

    • |

    • ^

输入格式

三个整数\(x,y,c\)同题意

输出格式

竖式结果

样例 #1

样例输入 #1

32 21 &

样例输出 #1

00000000000000000000000000100000
00000000000000000000000000010101
--------------------------------
00000000000000000000000000000000

题解

做这道题有3种方法。

方法一:进制转换(字符串)

这种方法在此不做过多的赘述,有兴趣的同学可以翻看一些luogu进制转换的题解。

不过真的是太简单啦!

方法二:位运算&状态压缩

这种方法也在此不做过多的赘述。

不过也真的是太简单啦!

·····方法三:bitset库函数

在C++中:有一个库函数 bitset

头文件:#include<bitset>

详见请查看此链接

AC code

#include <iostream>
#include <bitset>

using namespace std;

string performBitOperation(int x, int y, char op) {
    bitset<32> binaryX(x);
    bitset<32> binaryY(y);
    bitset<32> result;

    switch (op) {
        case '&':
            result = binaryX & binaryY;
            break;
        case '|':
            result = binaryX | binaryY;
            break;
        case '^':
            result = binaryX ^ binaryY;
            break;
        default:
            cout << "Invalid operator!" << endl;
            return "";
    }

    string binaryXStr = binaryX.to_string();
    string binaryYStr = binaryY.to_string();
    string resultStr = result.to_string();

    string separator(32, '-');

    string output = binaryXStr + "\n" + binaryYStr + "\n" + separator + "\n" + resultStr;

    return output;
}

int main() {
    int x, y;
    char op;

    cin >> x >> y >> op;

    string result = performBitOperation(x, y, op);
    cout << result << endl;

    return 0;
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月27日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   82   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   58   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   44   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   62   0   0 C++
HiNug2AQfSLq