Wie kann man einzelne Bits setzen, löschen oder switchen?

Nachdem einige COBOL-Programmieren doch gesagt haben:" C/C++ kommt nicht in Frage, dort kann man keine Bits setzen" hier eine kleine Klasse die das realisiert.

Dabei arbeitet die Klasse so, dass zuerst ein Wert, der zu verändern ist mit "SetValue(long lValue)" gesetzt wird. Dann kann diesermit den Methoden "SetBit, ClearBit, ChangeBit und IsSet" bearbeitet werden. Wer es einfacher oder keine Klasse will braucht nur den Teil zum löschen oder setzen zu nutzen. Ggf. könnte die Klasse noch derart erweitert werden, dass man gleich beim setzen oder ändern der zu bearbeitenden Wert übergibt.

class GBits
{
private:
	unsigned long value;
public:
	 GBits();
	 GBits(unsigned long lValue);
	 GBits(String lValue);
	 void SetValue(unsigned long lValue);
	 void SetValue(String lValue);
	 unsigned long SetBit(int b);
	 unsigned long ClearBit(int b);
    bool IsSet(int b);
	 unsigned long ChangeBit(int b);
	 String GetString();
	 unsigned long GetValue();
};

GBits::GBits()
{
value=0;
}

GBits::GBits(unsigned long lValue)
{
value=lValue;
}

GBits::GBits(String lValue)
{
value=strtoul(lValue.c_str(),NULL,2);
}

void GBits::SetValue(unsigned long lValue)
{
value=lValue;
}

void GBits::SetValue(String lValue)
{
value=strtol(lValue.c_str(),NULL,2);
}

unsigned long GBits::SetBit(int b)
{
long t=1;
t=t<<b;
return value|=t;
}

unsigned long GBits::ClearBit(int b)
{
long t=1;
t=t<<b;
return value&=~t;
}

bool GBits::IsSet(int b)
{
long t=1;
t=t<<b;
if(value&t)
	return true;
else
	return false;
}

unsigned long GBits::ChangeBit(int b)
{
long t=1;
t=t<<b;
return value^=t;
}

String GBits::GetString()
{
String rt;
unsigned long be=value;
int l;
while(be>0)
	{
	if(be%2==0)
		rt+="0";
	else
		rt+="1";
	be/=2;
	}
rt=strrev(rt.c_str());
l=rt.Length();
if(l>16&&l<32)
	{
	while(rt.Length()<32)
		rt="0"+rt;
	}
else if(l>8&&l<16)
	{
	while(rt.Length()<16)
		rt="0"+rt;
	}
else if(l<8)
	{
	while(rt.Length()<8)
		rt="0"+rt;
	}
return rt;
}

unsigned long GBits::GetValue()
{
return value;
}

Zur Übersicht