• Предмет: Информатика
  • Автор: olegdidukh1008
  • Вопрос задан 4 месяца назад

Поможіть будь-ласка із завданням:
#include
using namespace std;

void main(){
__int32 arr=848843586; // (0011 0010 1001 1000
// 0101 0011 0100 0010)
__int32 res=0;
__asm{mov cx, 8// кількість проходів циклу
mov eax, 1// маска= 0000 0000 0000 0000 0000 0000 0000 0001
start_outer: // початок зовнішнього циклу (по словах)
mov bx, 4// кількість проходів внутрішнього циклу
xor di, di // занулення лічильника одиниць
start_inner:// початок внутрішного циклу (по бітах)
mov edx, arr
and edx, eax // накладання маски
jz go_next// якщо результат —0
inc di// якщо результат —1, збільшуємо лічильник
go_next:
shl eax, 1// побітовий зсув вліво на 1 біт
dec bx// зменшуємо лічильник проходів на 1
test bx, bx// перевіряємо умову завершення циклу
jnz start_inner// повторюємо цикл, якщо результат не 0
and di, 1// перевірка на парність
jnz end_// якщо непарне
inc res// якщо парне, збільшуємо лічильник
end_:
loop start_outer// закінчення зовнішнього циклу
}
cout << res << endl;
system("pause");
}
На основі цього коду зродити код під це завдання: реалізуй програму аналізу двійкового колу для цього варіанту: Задано масив з 8 байт. Розглядаючи його як масив логічних значень х0х1х2х3х4х5х6х7(true —ненульові біти в байті, false —всі біти нульові), обчислити логічну формулу:=(7∧6∧1)∨(6∧4∧2∧1∧0)∨(7∧6∧3∧1). Це в с++

Ответы

Ответ дал: Belugagaga
0

Ответ:

Вот как можно переписать код на языке C++ для выполнения задания:

#include <iostream>

using namespace std;

int main(){

unsigned char arr[] = {0xD2, 0x53, 0x42}; // байты для анализа

bool b7, b6, b5, b4, b3, b2, b1, b0;

b7 = (arr[2] & 0x80) > 0; // проверка бита 7 в байте 2

b6 = (arr[2] & 0x40) > 0; // проверка бита 6 в байте 2

b5 = (arr[1] & 0x80) > 0; // проверка бита 7 в байте 1

b4 = (arr[1] & 0x10) > 0; // проверка бита 4 в байте 1

b3 = (arr[0] & 0x80) > 0; // проверка бита 7 в байте 0

b2 = (arr[1] & 0x04) > 0; // проверка бита 2 в байте 1

b1 = (arr[1] & 0x02) > 0; // проверка бита 1 в байте 1

b0 = (arr[1] & 0x01) > 0; // проверка бита 0 в байте 1

bool result = (b7 && b6 && b1) || (b6 && b4 && b2 && b1 && b0) || (b7 && b6 && b3 && b1);

cout << result << endl; // выводим результат

system("pause");

return 0;

}

В этом коде мы определяем массив из 3 байтов (8 бит), затем проверяем каждый бит в каждом байте, чтобы вычислить значение логической формулы. Результат выводится на экран, а программа останавливается, пока пользователь не нажмет любую клавишу.

Вас заинтересует