饭宝 发表于 2024-1-12 05:08:26

【luogu题解】T378828 位运算

位运算

题目背景

题目由 daiyulong20120222 创作(me)
并由
QBW1117完善以及数据 。
题目描述

给定两个数\(x,y\) ,在给定一个位运算符号 \(c\)。
请你列出 \(x,y\) 进行 \(c\) 位运算是的算数竖式式。
注:

[*]竖式这么列:

[*]显示出两个数的完整二进制,包括前导零。
[*]32个 '-'。
[*]显示出 \(ans\) ,包括前导零。

[*]位运算符号可能是:

[*]&
[*]|
[*]^

输入格式

三个整数\(x,y,c\)同题意
输出格式

竖式结果
样例 #1

样例输入 #1

32 21 &样例输出 #1

00000000000000000000000000100000
00000000000000000000000000010101
--------------------------------
00000000000000000000000000000000题解

做这道题有3种方法。
方法一:进制转换(字符串)
这种方法在此不做过多的赘述,有兴趣的同学可以翻看一些luogu进制转换的题解。
不过真的是太简单啦!
方法二:位运算&状态压缩
这种方法也在此不做过多的赘述。
不过也真的是太简单啦!
·····方法三:bitset库函数
在C++中:有一个库函数 bitset
头文件:#include
详见请查看此链接

AC code

#include #include using namespace std;string performBitOperation(int x, int y, char op) {    bitset binaryX(x);    bitset binaryY(y);    bitset result;    switch (op) {      case '&':            result = binaryX & binaryY;            break;      case '|':            result = binaryX | binaryY;            break;      case '^':            result = binaryX ^ binaryY;            break;      default:            coutx >> y >> op;    string result = performBitOperation(x, y, op);    cout
页: [1]
查看完整版本: 【luogu题解】T378828 位运算