alarm
Задайте вопрос
Информатика
Bogomazov

Программа на С++ Не сталкивался и с этим Просьба большая помочьСоздать целочисленный массив типа short int размером n. Элементы массива инициализируются по следующему алгоритму: 1) число А вводится с консоли; 2) используя битовые операции, сделать в нем так, чтобы 11 бит был заменён значением 5-го бита, а остальные сохранили свои значения. 3) присвоить преобразованное число А текшему элементу массива. Инициализированный массив вывести на печать и найти в нём элементы, у которых старшая четвёрка бит имеет все единицы.

ответы: 1
Зарегистрируйтесь, чтобы добавить ответ
Ответ:

#include <iostream>

short transform(short A)

{

// находим 5й бит А

bool bit = (A >> 4) & 1;

// если 5й бит равен 1, то просто применяем побитовое или на 11й бит А (1 | 1 = 1, 0 | 1 = 1 )

if (bit == 1)

A |= 1 << 10;

// если 0, то применяем побитовое и (1 & 0 = 0, 0 & 0 = 0)

else

// для того чтоб побитовое и не стерло число, его нужно сделать вида 011. . . 11 (0 и 10 единиц)

// сделать это можно сдвинув 1 бит на 10 позиций влево и инвертировав полученый результат

A &= ~(1 << 10);

return A;

}

short test(short A)

{

// можно взять логарифм по основанию 2 от A, но. . .

// сдвигаем все биты числа к концу, пока старший бит числа не окажется на месте 16го бита

if (A == 0)

return 0;

while (A >> 15 == 0)

A <<= 1;

// проверяем 12й-16й биты если они равны единицам

return ((A >> 12) & 0b1111) == 0b1111;

}

int main(int argc, char *argv[])

{

const size_t n = 1;

short mas[n];

for (short &elm : mas)

{

std::cin >> elm;

elm = transform(elm);

}

for (short &elm : mas)

std::cout << elm << ' ' << test(elm) << 'n';

}

342
Sarah Allen
Чтобы ответить необходимо зарегистрироваться.

Другие вопросы: - Информатика

Пользователь вводит целую часть,

Тема программное обеспечение ком

ЗаданиеУсовершенствуйте игру, со

Задание по С++. Прошу не плагиат

Разработайте программу, которая

Известно, что слово КАШКА закоди

Контакты
Реклама на сайте