Параметры
Результат
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);
}
Параметры
Результат
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);
}
Параметры
Результат
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));
}
Параметры
Результат
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);
}