-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOperations.cpp
More file actions
128 lines (100 loc) · 3.08 KB
/
Operations.cpp
File metadata and controls
128 lines (100 loc) · 3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
using namespace std;
#include "ExampleRegistry.h"
void arithmeticOperator();
void logicalOperator();
void bitWiseOperator();
class Operations : public IExample {
public:
std::string group() const override { return "core"; }
std::string name() const override { return "Operations"; }
std::string description() const override { return "Operation"; }
void execute() override {
arithmeticOperator();
logicalOperator();
bitWiseOperator();
}
};
REGISTER_EXAMPLE(Operations, "core", "Operations");
void arithmeticOperator() {
cout << "\n--- ArithmeticOperator Examples ---\n";
int a{100}, b{200};
// Addition
cout << "a = " << a << ", b = " << b << "\n";
int sum = a + b;
cout << "sum = " << sum << "\n";
// Subtraction
cout << "a = " << a << ", b = " << b << "\n";
int different = a - b;
cout << "different = " << different << "\n";
// Multiplication
cout << "a = " << a << ", b = " << b << "\n";
int product = a * b;
cout << "product = " << product << "\n";
// Division
cout << "a = " << a << ", b = " << b << "\n";
int quotient = a / b;
cout << "quotient = " << quotient << "\n";
// Modulus
cout << "a = " << a << ", b = " << b << "\n";
int remainder = a % b;
cout << "remainder = " << remainder << "\n";
// Increment
cout << "a = " << a << "\n";
int preIn = ++a; // increase a, return a
cout << "preIn = " << preIn << "\n";
cout << "a = " << a << "\n";
int postIn = a++; // copy a to a copy, then increase a, return copy
cout << "postIn = " << postIn << "\n";
// Decrement
cout << "b = " << b << "\n";
int preDe = --b;
cout << "preDe = " << preDe << "\n";
cout << "b = " << b << "\n";
int postDe = b--;
cout << "postDe = " << postDe << "\n";
// Comma:
int value = (a++, b); // a is incremented, then b is returned
cout << "a = " << a << ", b = " << b << "\n";
cout << "comma(a++, b) = " << value << "\n";
}
void logicalOperator() {
cout << "\n--- LogicalOperator Examples ---\n";
bool a = true;
bool b = false;
bool c = true;
cout << boolalpha; // show true/false instead of 1/0
cout << "a = " << a << ", b = " << b << ", c = " << c << "\n\n";
// AND (&&)
cout << "[AND] a && b = " << (a && b) << "\n";
// OR (||)
cout << "[OR ] a || b = " << (a || b) << "\n";
// NOT (!)
cout << "[NOT] !c = " << (!c) << "\n";
}
#include <bitset>
void bitWiseOperator() {
cout << "\n--- BitWiseOperator Examples ---\n";
bitset<8> bitsA {
0b1111'1111}; bitset<8> bitsB { 0b1111'0000};
cout
<< "bitA = " << bitsA << ", bitB = " << bitsB << "\n";
// AND
bitset<8> result = bitsA & bitsB;
cout << "bitA && bitB= " << result << "\n";
// OR
result = bitsA | bitsB;
cout << "bitA | bitB= " << result << "\n";
// XOR
result = bitsA ^ bitsB;
cout << "bitA ^ bitB= " << result << "\n";
// NOT
result = ~bitsA;
cout << "~bitA = " << result << "\n";
// LEFT SHIFT
result = bitsA << 1;
cout << "bitA << 1 = " << result << "\n";
// RIGHT SHIFT
result = bitsA >> 1;
cout << "bitA >> 1 = " << result << "\n";
}