Поможіть будь-ласка із завданням:
#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). Це в с++
Ответы
Ответ дал:
0
Ответ:
Ось так можна реалізувати дане завдання:
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
bitset<8> bits(848843586);
bool res = (bits[7] && bits[6] && bits[1]) || (bits[6] && bits[4] && bits[2] && bits[1] && bits[0]) || (bits[7] && bits[6] && bits[3] && bits[1]);
cout << "Result: " << res << endl;
return 0;
}
У цьому коді створюється об'єкт std::bitset з 8 бітами, які мають значення, що відповідає числу 848843586. Далі, на основі цих бітів, обчислюється логічна формула, згідно з варіантом завдання. Результат формули виводиться на екран.
Вас заинтересует
3 месяца назад
4 месяца назад
4 месяца назад
2 года назад