header file:
Code: Select all
...
private:
bool m_bFlag;
public :
void toggleFlag(){m_bFlag = !m_bFlag;}
________
Self-Funded Health Care Forum
Code: Select all
...
private:
bool m_bFlag;
public :
void toggleFlag(){m_bFlag = !m_bFlag;}
Code: Select all
std::cout << "Hello World!" << std::endl;
Code: Select all
typedef char byte;
byte m_flags = 0;
void ToggleFlag(byte i) { m_flags ^= (1 << i); }
void EnableFlag(byte i) { m_flags |= (1 << i); }
void DisableFlag(byte i) { m_flags &= (!(1 << i)); }
bool IsEnabledFlag(byte i) { return(m_flags & (1 << i)) != 0; }
Code: Select all
#include "time.h"
typedef char byte;
typedef unsigned long counter;
byte m_flags = 0;
int main()
{
bool checkToggle = true;
bool checkAsk = true;
counter max = ULONG_MAX, i1; // Counting to
time_t start, end, total; // Time values
bool flagX = false;
int bit;
if(checkToggle) {
// Byte flag
for(bit=0; bit<8; ++bit) {
time(&start);
for(i1=0; i1<max; ++i1) m_flags ^= (1 << bit);
time(&end);
total = end - start;
printf("Toggle Flag (Bit %d): %u\n", bit, total);
}
// Bool flag
time(&start);
for(i1=0; i1<max; ++i1) flagX = !flagX;
time(&end);
total = end - start;
printf("Toggle Flag (bool): %u\n", total);
// Bool flag with Xor
time(&start);
for(i1=0; i1<max; ++i1) flagX = flagX ^ 1;
time(&end);
total = end - start;
printf("Toggle Flag (bool): %u\n", total);
}
if(checkAsk) {
// Byte flag
for(bit=0; bit<8; ++bit) {
time(&start);
for(i1=0; i1<max; ++i1) if((m_flags & (1 << bit)) );
time(&end);
total = end - start;
printf("Ask Flag (Bit %d): %u\n", bit, total);
}
// Bool flag
time(&start);
for(i1=0; i1<max; ++i1) if(flagX);
time(&end);
total = end - start;
printf("Ask flag (bool): %u\n", total);
}
return 0;
}
Note that your results may change due to differences in processor speed, hdd usage, mem usage, ....Toggle Flag (Bit 0): 20
Toggle Flag (Bit 1): 20
Toggle Flag (Bit 2): 21
Toggle Flag (Bit 3): 20
Toggle Flag (Bit 4): 21
Toggle Flag (Bit 5): 20
Toggle Flag (Bit 6): 21
Toggle Flag (Bit 7): 21
Toggle Flag (bool): 43
Toggle Flag (bool): 8 // Awesome
Ask Flag (Bit 0): 8
Ask Flag (Bit 1): 7
Ask Flag (Bit 2): 8
Ask Flag (Bit 3): 8
Ask Flag (Bit 4): 8
Ask Flag (Bit 5): 7
Ask Flag (Bit 6): 8
Ask Flag (Bit 7): 8
Ask flag (bool): 8
Code: Select all
#define ToggleFlag(x) x = x^1 // or x^=1
// use with ToggleFlag(bflag);
// or
bool GetToggleFlag(bool value) { return value ^ 1; }
// use with bflag = GetToggleFlag(bflag)
Code: Select all
flag &= ~(1 << i);Totally right, my mistake.vitek wrote:DisableFlag is wrong... ! is a boolean negation operator. If any bit is set, the value becomes zero. ~ is the binary negation operator.