62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
// 输入一个数,输出它的绝对值。
|
|
#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;
|
|
} |