Есть некоторые массивы
bitset<8> BIN_BROADCAST[4] = {}; // пустой
bitset<8> BIN_REZ[4] = {}; // тут {10000010 00000100 01100100 00000000}
Нужно заменить последние 10 нулей на 1.
Пробовал несколько вариантов реализации, но ничего разумного не вышло, вот моё последнее решение(мне оно кажется наиболее логичным), но оно вызывает в билдере external exception eefface
bitset<8> BIN_HOST[1] = {}; // кол-во нулей для замены
int KOL_NULL = 0;
for(int i = 4; i > 0; i--){
for(int j = 8; j > 0; j--){
BIN_BROADCAST[i][j] = BIN_REZ[i][j].flip();
KOL_NULL += 1;
if(KOL_NULL == BIN_HOST[0].to_ulong()){
break;
}
}
break;
}
for (int i = 0; i < 4; i++) {
Memo1 ->Lines ->Add(BIN_BROADCAST[i].to_ulong());
}
Лично мое мнение в данной задаче не хранить все в массиве, а в bitset<32>.
Чтобы поменять бито с позиции a по позицию б самое элементарное пройтись циклом и дернуть там флип.
Вот минимальный пример кода.
#include <iostream>
#include <bitset>
void FormOut(std::bitset<32> bs) {
for (std::size_t i{ 0 }; i < 4; ++i) {
std::bitset<8> tmp;
for (std::size_t j{ 0 }; j < 8; ++j) {
tmp[j] = bs[4 * i + j];
}
std::cout << tmp.to_ulong() << " ";
}
std::cout << std::endl;
}
int main() {
const std::size_t bit_size{32};
std::bitset<bit_size> bs;
FormOut(bs);
for (std::size_t i{ 0 }; i < bit_size; ++i) {
bs[i] = 1;
}
FormOut(bs);
std::size_t from{3}, to {12};
if (from > bit_size || to > bit_size) {
return -1;
}
if (to < from) {
std::swap(to, from);
}
for (std::size_t i{from}; i < to; ++i) {
bs[i].flip();
}
FormOut(bs);
return 0;
}
как минимум, вместо
for(int i = 4; i > 0; i--){
for(int j = 8; j > 0; j--){
надо
for(int i = 3; i >= 0; i--){
for(int j = 7; j >= 0; j--){
а по-хорошему, надо переделать вообще всё. Массивы из битмапов какие-то на ровном месте...
Какие существуют виды рекламных бордов и как выбрать подходящий?
Аренда удаленного сервера: цены, провайдеры и условия. Руководство для начинающих
Есть динамический массив под названием buffer, который хранит в себе строку в стиле С(Например какое-нибудь предложение: Hello world) Что делает данная...
Есть база данных sqlite, как получить количество содержащихся в ней строк?