日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

【luogu题解】T378828 位运算

發(fā)布時(shí)間:2023/11/26 windows 38 coder
生活随笔 收集整理的這篇文章主要介紹了 【luogu题解】T378828 位运算 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

位運(yùn)算

題目背景

題目由 daiyulong20120222 創(chuàng)作(me)

并由
QBW1117完善以及數(shù)據(jù) 。

題目描述

給定兩個(gè)數(shù)\(x,y\) ,在給定一個(gè)位運(yùn)算符號(hào) \(c\)

請(qǐng)你列出 \(x,y\) 進(jìn)行 \(c\) 位運(yùn)算是的算數(shù)豎式式。

注:

  1. 豎式這么列:

    • 顯示出兩個(gè)數(shù)的完整二進(jìn)制,包括前導(dǎo)零。

    • 32個(gè) '-'。

    • 顯示出 \(ans\) ,包括前導(dǎo)零。

  2. 位運(yùn)算符號(hào)可能是:

    • &

    • |

    • ^

輸入格式

三個(gè)整數(shù)\(x,y,c\)同題意

輸出格式

豎式結(jié)果

樣例 #1

樣例輸入 #1

32 21 &

樣例輸出 #1

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

題解

做這道題有3種方法。

方法一:進(jìn)制轉(zhuǎn)換(字符串)

這種方法在此不做過(guò)多的贅述,有興趣的同學(xué)可以翻看一些luogu進(jìn)制轉(zhuǎn)換的題解。

不過(guò)真的是太簡(jiǎn)單啦!

方法二:位運(yùn)算&狀態(tài)壓縮

這種方法也在此不做過(guò)多的贅述。

不過(guò)也真的是太簡(jiǎn)單啦!

·····方法三:bitset庫(kù)函數(shù)

在C++中:有一個(gè)庫(kù)函數(shù) bitset

頭文件:#include<bitset>

詳見(jiàn)請(qǐng)查看此鏈接

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;
}

總結(jié)

以上是生活随笔為你收集整理的【luogu题解】T378828 位运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。