// 输入一个数，输出它的绝对值。
#include <iostream>
#include <bitset>

using namespace std;

int main()
{
    // 位运算方法
    int x;
    cout << "请输入一个整数: ";
    cin >> x;

    cout << x << " 的二进制表示为: " << bitset<32>(x) << endl;
    int mask = x >> 31;
    cout << "mask: " << bitset<32>(mask) << "\t mask 的 int 值为: " << (int)mask << endl; // m

    cout << "x + mask: " << bitset<32>(x + mask) << "\t x + mask 的 int 值为: " << (int)(x + mask) << endl; // x + m
    cout << "(x + mask) ^ mask: " << bitset<32>((x + mask) ^ mask) << endl;                                 // (x + m) ^ m = x + m ^ m = x + 0 = x

    cout << cout << x << " 的绝对值为: " << ((x + mask) ^ mask) << endl;

    return 0;

    // 三目运算符方法
    // int x;
    // cout << "请输入一个整数: ";
    // cin >> x;

    // cout << x << " 的绝对值为: " << (x > 0 ? x : -x) << endl;

    // return 0;

    // if-else 方法
    // int x;
    // cout << "请输入一个整数: ";
    // cin >> x;

    // if (x > 0)
    //     cout << x << " 的绝对值为: " << x << endl;
    // else
    //     cout << x << " 的绝对值为: " << -x << endl;

    // return 0;

    // switch-case 方法
    // int x;
    // cout << "请输入一个整数: ";
    // cin >> x;

    // switch (x > 0)
    // {
    // case 1:
    //     cout << x << " 的绝对值为: " << x << endl;
    //     break;
    // case 0:
    //     cout << x << " 的绝对值为: " << -x << endl;
    //     break;
    // }

    // return 0;
}