Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2025, 10:57   #11
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Я написал свой клас. Но как прочитать значение бита для конкретного индекса и модифицировать значение индекса я не знаю как придумать. У меня есть get , set
Цитата:
uint8_t* bytes
- 8 бит. Как мне доступатся по опледеленому индексу я не поймуя не могу придумать. Как именно брать индекс в массиве . uint8_t - 8 бит тоесть разделяем на 8. Но где такое делать?
Мой код*
Код:
enum class Position
{
	ON
	, OFF
};

class BitArray 
{
private:
	uint8_t mNumBits;
	int* mArray;

public:
	BitArray();
	BitArray(uint8_t numBits);

	uint8_t SetBit(int* array, uint8_t numBits, Position pos);
	uint8_t GetBit(int* array, uint8_t numBits);
	
	~BitArray();
Код:
#include "BitArray.h"

BitArray::BitArray()
	: mNumBits(0)
	, mArray(0)
{
}

BitArray::BitArray(uint8_t numBits)
	: mNumBits(numBits)
{
	mArray = new int[numBits];
}

uint8_t BitArray::SetBit(int* array, uint8_t numBits, Position pos)
{
	if (pos == Position::ON) 
	{
		return *array | (1 << numBits);

	}
	else
		return *array & ~(1 << numBits);

}

uint8_t BitArray::GetBit(int* array, uint8_t numBits)
{
	return (*array >> numBits) & 1;

}



BitArray::~BitArray()
{
	delete[] mArray;
}
vovamakarovych вне форума Ответить с цитированием
Старый 27.01.2025, 11:31   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,803
По умолчанию

Цитата:
Сообщение от vovamakarovych Посмотреть сообщение
Как мне доступатся по опледеленому индексу я не поймуя не могу придумать.
Например, посмотреть там, куда вас уже посылали... Хотя это элементарные вещи...
Код:
        auto& _Selected_word = _Array[_Pos / _Bitsperword];
        const auto _Bit      = _Ty{1} << _Pos % _Bitsperword;
        if (_Val) {
            _Selected_word |= _Bit;
        } else {
            _Selected_word &= ~_Bit;
        }
return *this;
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать функцию побитового ИЛИ | между двумя файлами, записать это в один файл в обратном порядке битов на Си\С++ Диана5251 Общие вопросы C/C++ 1 09.02.2020 21:54
написать функцию, определяющую пол продавца. Используя функцию, вывести продавцов - мужчин Nuc SQL, базы данных 12 12.03.2018 10:12
[РЕШЕНО][Delphi] Ошибка 'Operator not applicable to this operator type'. Почему? Есть код. IlyaHistorik Помощь студентам 3 21.10.2017 19:37
Написать функцию подсчета суммы битов в байте abc1234 Помощь студентам 5 16.01.2013 15:38
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38