qfedu-basic-level/day7/homework/h20.cpp

62 lines
1.5 KiB
C++
Raw Permalink Normal View History

2023-06-21 11:31:26 +08:00
// 输入一个数,输出它的绝对值。
#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;
}