【luogu题解】T378828 位运算

饭宝  金牌会员 | 2024-1-12 05:08:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 924|帖子 924|积分 2772

位运算

题目背景

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

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

  • 竖式这么列:

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

  • 位运算符号可能是:

    • &
    • |
    • ^

输入格式

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

竖式结果
样例 #1

样例输入 #1
  1. 32 21 &
复制代码
样例输出 #1
  1. 00000000000000000000000000100000
  2. 00000000000000000000000000010101
  3. --------------------------------
  4. 00000000000000000000000000000000
复制代码
题解

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

AC code

[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:            cout  x >> y >> op;    string result = performBitOperation(x, y, op);    cout
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表