блог-форум о программировании
Вы не вошли.
Страницы 1
Параметры
unsigned char *iArray - ссылка на битовый массив
size_t iNum - порядковый номер проверяемого бита, начиная с нуля
Результат
bool
// полагаем, что в байте 8 бит
inline bool GetBit(const unsigned char *iArray, const size_t iNum) {
return ((*(iArray+(iNum>>3))&(1<<(iNum&7)))!=0);
}
// бит в байте - CHAR_BIT, работает чуть медленее
#include <limits>
inline bool GetBit(const unsigned char *iArray, const size_t iNum) {
return ((*(iArray+(iNum/CHAR_BIT))&(1<<(iNum%CHAR_BIT)))!=0);
}
Параметры
unsigned char *iArray - ссылка на битовый массив
size_t iNum - порядковый номер устанавливаемого бита, начиная с нуля
Результат
void
// полагаем, что в байте 8 бит
inline void SetBit(unsigned char *iArray, const size_t iNum) {
*(iArray+(iNum>>3)) |= (1<<(iNum&7));
}
// бит в байте - CHAR_BIT, работает чуть медленее
#include <limits>
inline void SetBit(unsigned char *iArray, const size_t iNum) {
*(iArray+(iNum/CHAR_BIT)) |= 1<<(iNum%CHAR_BIT);
}
Параметры
unsigned char *iArray - ссылка на битовый массив
size_t iNum - порядковый номер очищаемого бита, начиная с нуля
Результат
void
// полагаем, что в байте 8 бит
inline void ClrBit(unsigned char *iArray, const size_t iNum) {
*(iArray+(iNum>>3)) &= ~(1<<(iNum&7));
}
// бит в байте - CHAR_BIT, работает чуть медленее
#include <limits>
inline void ClrBit(unsigned char *iArray, const size_t iNum) {
*(iArray+(iNum/CHAR_BIT)) &= ~(1<<(iNum%CHAR_BIT));
}
Параметры
unsigned char *iArray - ссылка на битовый массив
size_t iNum - порядковый номер инвертируемого бита, начиная с нуля
Результат
void
// полагаем, что в байте 8 бит
inline void FlpBit(unsigned char *iArray, const size_t iNum) {
*(iArray+(iNum>>3)) ^= (1<<(iNum&7));
}
// бит в байте - CHAR_BIT, работает чуть медленее
#include <limits>
inline void FlpBit(unsigned char *iArray, const size_t iNum) {
*(iArray+(iNum/CHAR_BIT)) ^= 1<<(iNum%CHAR_BIT);
}
:: Мои программные ништяки ::
Вне форума
Страницы 1
[ Сгенерировано за 0.042 сек, 7 запросов выполнено - Использовано памяти: 2.27 Мбайт (Пик: 2.72 Мбайт) ]