ФІО = Горбаченко В.А. Запитання:/* Ефименко. Лаба 3. Варіант 8 * Написати функцію, яка повертає число, одержане з цілого числа х, в якому * інвертовані n розрядів, починаючи з позиції p, а решта розрядів залишені * без змін (крайній правий біт вважити нульовим). Перевіряти правильність * значень n та p. */ #include #include #include using namespace std; // підключаємо все необхідне для роботи програми void print_bits (unsigned n) { // функція друкує біти, функція з лекії int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів for (bit = sizeof(n)*8-1; bit >= 0; bit--) // початкове значення bit = довжина змінної unsigned { if ((n >> bit) & 01) { // тут іде логічне множення... складно пояснити, але спробую... // (n >> bit) - здвигає на "bit" розрядів // & 01 - логічне множення - тобто, грубо кажучи кусає правіший біт // тут іде побітове множення(чи просто кажучи побітове "і"), для прикладу: // 10101110001101 // & побітове "і" // 00000000000001 тобто тут насправді (01) // = // 00000000000001 - цей результат позитивний, тобто більше нуля, // а значить, грубо кажучи == TRUE putchar ('1'); } else {// іначе 0 - наприклад: // 011010 // & // 000001 // = // 000000 - == FALSE або нулю - негативний putchar ('0'); } if (bit % 4 == 0) putchar (' '); // якщо біт, на якому стоїть лічильник кратний чотирьом, то ставимо пробіл } cout<= 0; bit--) { // cout<> bit) & 01) // cout<<((x>>bit) & 01); // print_bits(z); if (bit>=p && bit>bit) & 01)); mnoj=(mnoj<<1) | z; } else { z=(((x>>bit) & 01)); mnoj=(mnoj<<1) | z; } } cout<> num; // зчитуємо число print_bits (num); // друкуємо біти int n,p; do { cout << " Enter P [numeracia s nula]: " ; // підказка користувачу cin >> p; // зчитуємо число if (p<0) {cout<<" -> ERROR : P must be >=0"<> n; // зчитуємо число if (n<=0) {cout<<" -> ERROR : N must be >=1"<