Родитель
7f4b849e2c
Сommit
a478b08794
@ -0,0 +1,107 @@
|
||||
#include <iostream>
|
||||
#include <cassert>
|
||||
#include <cstdint> // Äëÿ uint8_t, uint16_t
|
||||
#include <cstring> // Äëÿ ðàáîòû ñ C-style ñòðîêàìè
|
||||
#include <iomanip> // Äëÿ âûâîäà â ôîðìàòå hex
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Ïå÷àòü áàéòà â øåñòíàäöàòåðè÷íîì âèäå
|
||||
void print_in_hex(uint8_t byte) {
|
||||
cout << hex << uppercase << (byte >> 4) << (byte & 0x0F) << ' ';
|
||||
}
|
||||
|
||||
// Ïå÷àòü ìàññèâà â øåñòíàäöàòåðè÷íîì âèäå
|
||||
void print_in_hex(const void* data, size_t size) {
|
||||
const uint8_t* bytes = reinterpret_cast<const uint8_t*>(data);
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
print_in_hex(bytes[i]);
|
||||
if ((i + 1) % 16 == 0) cout << '\n';
|
||||
}
|
||||
cout << dec << '\n'; // Âîçâðàùàåì äåñÿòè÷íûé ôîðìàò
|
||||
}
|
||||
|
||||
// Ïå÷àòü áàéòà â äâîè÷íîì âèäå
|
||||
void print_in_binary(uint8_t byte) {
|
||||
for (int i = 7; i >= 0; --i) {
|
||||
cout << ((byte >> i) & 1);
|
||||
}
|
||||
cout << ' ';
|
||||
}
|
||||
|
||||
// Ïå÷àòü ìàññèâà â äâîè÷íîì âèäå
|
||||
void print_in_binary(const void* data, size_t size) {
|
||||
const uint8_t* bytes = reinterpret_cast<const uint8_t*>(data);
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
print_in_binary(bytes[i]);
|
||||
if ((i + 1) % 4 == 0) cout << '\n';
|
||||
}
|
||||
cout << '\n';
|
||||
}
|
||||
|
||||
void bitwise_calculator() {
|
||||
uint16_t operand1, operand2;
|
||||
char op;
|
||||
cout << "Enter first operand (uint16_t): ";
|
||||
cin >> operand1;
|
||||
cout << "Enter operator (&, |, ^): ";
|
||||
cin >> op;
|
||||
cout << "Enter second operand (uint16_t): ";
|
||||
cin >> operand2;
|
||||
|
||||
uint16_t result = 0;
|
||||
switch (op) {
|
||||
case '&': result = operand1 & operand2; break;
|
||||
case '|': result = operand1 | operand2; break;
|
||||
case '^': result = operand1 ^ operand2; break;
|
||||
default:
|
||||
cerr << "Invalid operator!\n";
|
||||
return;
|
||||
}
|
||||
|
||||
cout << "Result in hex: ";
|
||||
print_in_hex(&result, sizeof(result));
|
||||
|
||||
cout << "Result in binary: ";
|
||||
print_in_binary(&result, sizeof(result));
|
||||
}
|
||||
|
||||
struct Student {
|
||||
char name[17]; // Èìÿ ñòóäåíòà
|
||||
uint16_t year; // Ãîä ïîñòóïëåíèÿ
|
||||
float average_score; // Ñðåäíèé áàëë
|
||||
uint8_t gender : 1; // Ïîë: 0 - æåíñêèé, 1 - ìóæñêîé
|
||||
uint8_t completed_courses; // Êîëè÷åñòâî êóðñîâ
|
||||
Student* group_leader; // Óêàçàòåëü íà ñòàðîñòó
|
||||
};
|
||||
|
||||
void test_students() {
|
||||
Student students[3] = {
|
||||
{"Alice", 2020, static_cast<float>(4.5), 0, 3, nullptr},
|
||||
{"Bob", 2021, static_cast<float>(4.0), 1, 2, nullptr},
|
||||
{"Charlie", 2020, static_cast<float>(4.2), 1, 5, nullptr}
|
||||
};
|
||||
|
||||
// Ïå÷àòü àäðåñîâ è ðàçìåðîâ
|
||||
cout << "Array address: " << &students << ", size: " << sizeof(students) << " bytes\n";
|
||||
for (size_t i = 0; i < 3; ++i) {
|
||||
cout << "Student " << i + 1 << " address: " << &students[i] << ", size: " << sizeof(students[i]) << " bytes\n";
|
||||
}
|
||||
|
||||
// Ïå÷àòü âñåõ ïîëåé
|
||||
for (const auto& student : students) {
|
||||
cout << "Name: " << student.name << ", Address: " << (void*)student.name << '\n';
|
||||
cout << "Year: " << student.year << ", Address: " << &student.year << '\n';
|
||||
cout << "Average Score: " << student.average_score << ", Address: " << &student.average_score << '\n';
|
||||
cout << "Gender: " << static_cast<int>(student.gender) << '\n';
|
||||
cout << "Completed Courses: " << static_cast<int>(student.completed_courses) << '\n';
|
||||
cout << "Group Leader Address: " << student.group_leader << "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
// Âûçîâ ôóíêöèé
|
||||
bitwise_calculator();
|
||||
test_students();
|
||||
return 0;
|
||||
}
|
Загрузка…
Ссылка в новой задаче