Есть некоторые массивы
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--){
а по-хорошему, надо переделать вообще всё. Массивы из битмапов какие-то на ровном месте...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть динамический массив под названием buffer, который хранит в себе строку в стиле С(Например какое-нибудь предложение: Hello world) Что делает данная...
Есть база данных sqlite, как получить количество содержащихся в ней строк?