How to read bits from a char variable

I needed to read the value of single bits out of a char variable. This is how I've done it.


  • Create first of all a structure of bits:
struct BITS
{
bool b1:1;
bool b2:1;
bool b3:1;
bool b4:1;
bool b5:1;
bool b6:1;
bool b7:1;
bool b8:1;
};
  • Now declare the variables in the function you're using:
void myfunction()
{
char cTarget;
BITS b;
  • Now assign a value to char and fill the BITS structure:
cout << "The full byte has a meaning of...: " << cByteRead << endl;
cout << "...which is in int:" << (int)cByteRead << endl;
b = *(BITS*)(&cByteRead);
  • And finally display the values of the bits:
cout << b.b1 << endl;
cout << b.b2 << endl;
cout << b.b3 << endl;
cout << b.b4 << endl;
cout << b.b5 << endl;
cout << b.b6 << endl;
cout << b.b7 << endl;
cout << b.b8 << endl;

And now, everything together:

struct BITS
{
		bool b1 :1;
		bool b2 :1;
		bool b3 :1;
		bool b4 :1;
		bool b5 :1;
		bool b6 :1;
		bool b7 :1;
		bool b8 :1;
};

void myfunction()
{
	char cByteRead;
	BITS b;

	cByteRead = 'a';

	cout << "The full byte has a meaning of...: " << cByteRead << endl;
	cout << "...which is in int:" << (int)cByteRead << endl;

	b = *(BITS*)(&cByteRead);
	cout << b.b1 << endl;
	cout << b.b2 << endl;
	cout << b.b3 << endl;
	cout << b.b4 << endl;
	cout << b.b5 << endl;
	cout << b.b6 << endl;
	cout << b.b7 << endl;
	cout << b.b8 << endl;
}

The mapping of the integer value of a char variable is:

Bit8	Bit7	Bit6	Bit5	Bit4	Bit3	Bit2	Bit1		Int
0	0	0	0	0	0	0	0	|	0
0	0	0	0	0	0	0	1	|	1
0	0	0	0	0	0	1	0	|	2
0	0	0	0	0	0	1	1	|	3
0	0	0	0	0	1	0	0	|	4
0	0	0	0	0	1	0	1	|	5
0	0	0	0	0	1	1	0	|	6
0	0	0	0	0	1	1	1	|	7
0	0	0	0	1	0	0	0	|	8
0	0	0	0	1	0	0	1	|	9
0	0	0	0	1	0	1	0	|	10
0	0	0	0	1	0	1	1	|	11
0	0	0	0	1	1	0	0	|	12
0	0	0	0	1	1	0	1	|	13
0	0	0	0	1	1	1	0	|	14
0	0	0	0	1	1	1	1	|	15
0	0	0	1	0	0	0	0	|	16
0	0	0	1	0	0	0	1	|	17
0	0	0	1	0	0	1	0	|	18
0	0	0	1	0	0	1	1	|	19
0	0	0	1	0	1	0	0	|	20
0	0	0	1	0	1	0	1	|	21
0	0	0	1	0	1	1	0	|	22
0	0	0	1	0	1	1	1	|	23
0	0	0	1	1	0	0	0	|	24
0	0	0	1	1	0	0	1	|	25
0	0	0	1	1	0	1	0	|	26
0	0	0	1	1	0	1	1	|	27
0	0	0	1	1	1	0	0	|	28
0	0	0	1	1	1	0	1	|	29
0	0	0	1	1	1	1	0	|	30
0	0	0	1	1	1	1	1	|	31
0	0	1	0	0	0	0	0	|	32
0	0	1	0	0	0	0	1	|	33
0	0	1	0	0	0	1	0	|	34
0	0	1	0	0	0	1	1	|	35
0	0	1	0	0	1	0	0	|	36
0	0	1	0	0	1	0	1	|	37
0	0	1	0	0	1	1	0	|	38
0	0	1	0	0	1	1	1	|	39
0	0	1	0	1	0	0	0	|	40
0	0	1	0	1	0	0	1	|	41
0	0	1	0	1	0	1	0	|	42
0	0	1	0	1	0	1	1	|	43
0	0	1	0	1	1	0	0	|	44
0	0	1	0	1	1	0	1	|	45
0	0	1	0	1	1	1	0	|	46
0	0	1	0	1	1	1	1	|	47
0	0	1	1	0	0	0	0	|	48
0	0	1	1	0	0	0	1	|	49
0	0	1	1	0	0	1	0	|	50
0	0	1	1	0	0	1	1	|	51
0	0	1	1	0	1	0	0	|	52
0	0	1	1	0	1	0	1	|	53
0	0	1	1	0	1	1	0	|	54
0	0	1	1	0	1	1	1	|	55
0	0	1	1	1	0	0	0	|	56
0	0	1	1	1	0	0	1	|	57
0	0	1	1	1	0	1	0	|	58
0	0	1	1	1	0	1	1	|	59
0	0	1	1	1	1	0	0	|	60
0	0	1	1	1	1	0	1	|	61
0	0	1	1	1	1	1	0	|	62
0	0	1	1	1	1	1	1	|	63
0	1	0	0	0	0	0	0	|	64
0	1	0	0	0	0	0	1	|	65
0	1	0	0	0	0	1	0	|	66
0	1	0	0	0	0	1	1	|	67
0	1	0	0	0	1	0	0	|	68
0	1	0	0	0	1	0	1	|	69
0	1	0	0	0	1	1	0	|	70
0	1	0	0	0	1	1	1	|	71
0	1	0	0	1	0	0	0	|	72
0	1	0	0	1	0	0	1	|	73
0	1	0	0	1	0	1	0	|	74
0	1	0	0	1	0	1	1	|	75
0	1	0	0	1	1	0	0	|	76
0	1	0	0	1	1	0	1	|	77
0	1	0	0	1	1	1	0	|	78
0	1	0	0	1	1	1	1	|	79
0	1	0	1	0	0	0	0	|	80
0	1	0	1	0	0	0	1	|	81
0	1	0	1	0	0	1	0	|	82
0	1	0	1	0	0	1	1	|	83
0	1	0	1	0	1	0	0	|	84
0	1	0	1	0	1	0	1	|	85
0	1	0	1	0	1	1	0	|	86
0	1	0	1	0	1	1	1	|	87
0	1	0	1	1	0	0	0	|	88
0	1	0	1	1	0	0	1	|	89
0	1	0	1	1	0	1	0	|	90
0	1	0	1	1	0	1	1	|	91
0	1	0	1	1	1	0	0	|	92
0	1	0	1	1	1	0	1	|	93
0	1	0	1	1	1	1	0	|	94
0	1	0	1	1	1	1	1	|	95
0	1	1	0	0	0	0	0	|	96
0	1	1	0	0	0	0	1	|	97
0	1	1	0	0	0	1	0	|	98
0	1	1	0	0	0	1	1	|	99
0	1	1	0	0	1	0	0	|	100
0	1	1	0	0	1	0	1	|	101
0	1	1	0	0	1	1	0	|	102
0	1	1	0	0	1	1	1	|	103
0	1	1	0	1	0	0	0	|	104
0	1	1	0	1	0	0	1	|	105
0	1	1	0	1	0	1	0	|	106
0	1	1	0	1	0	1	1	|	107
0	1	1	0	1	1	0	0	|	108
0	1	1	0	1	1	0	1	|	109
0	1	1	0	1	1	1	0	|	110
0	1	1	0	1	1	1	1	|	111
0	1	1	1	0	0	0	0	|	112
0	1	1	1	0	0	0	1	|	113
0	1	1	1	0	0	1	0	|	114
0	1	1	1	0	0	1	1	|	115
0	1	1	1	0	1	0	0	|	116
0	1	1	1	0	1	0	1	|	117
0	1	1	1	0	1	1	0	|	118
0	1	1	1	0	1	1	1	|	119
0	1	1	1	1	0	0	0	|	120
0	1	1	1	1	0	0	1	|	121
0	1	1	1	1	0	1	0	|	122
0	1	1	1	1	0	1	1	|	123
0	1	1	1	1	1	0	0	|	124
0	1	1	1	1	1	0	1	|	125
0	1	1	1	1	1	1	0	|	126
0	1	1	1	1	1	1	1	|	127
1	0	0	0	0	0	0	0	|	128
1	0	0	0	0	0	0	1	|	129
1	0	0	0	0	0	1	0	|	130
1	0	0	0	0	0	1	1	|	131
1	0	0	0	0	1	0	0	|	132
1	0	0	0	0	1	0	1	|	133
1	0	0	0	0	1	1	0	|	134
1	0	0	0	0	1	1	1	|	135
1	0	0	0	1	0	0	0	|	136
1	0	0	0	1	0	0	1	|	137
1	0	0	0	1	0	1	0	|	138
1	0	0	0	1	0	1	1	|	139
1	0	0	0	1	1	0	0	|	140
1	0	0	0	1	1	0	1	|	141
1	0	0	0	1	1	1	0	|	142
1	0	0	0	1	1	1	1	|	143
1	0	0	1	0	0	0	0	|	144
1	0	0	1	0	0	0	1	|	145
1	0	0	1	0	0	1	0	|	146
1	0	0	1	0	0	1	1	|	147
1	0	0	1	0	1	0	0	|	148
1	0	0	1	0	1	0	1	|	149
1	0	0	1	0	1	1	0	|	150
1	0	0	1	0	1	1	1	|	151
1	0	0	1	1	0	0	0	|	152
1	0	0	1	1	0	0	1	|	153
1	0	0	1	1	0	1	0	|	154
1	0	0	1	1	0	1	1	|	155
1	0	0	1	1	1	0	0	|	156
1	0	0	1	1	1	0	1	|	157
1	0	0	1	1	1	1	0	|	158
1	0	0	1	1	1	1	1	|	159
1	0	1	0	0	0	0	0	|	160
1	0	1	0	0	0	0	1	|	161
1	0	1	0	0	0	1	0	|	162
1	0	1	0	0	0	1	1	|	163
1	0	1	0	0	1	0	0	|	164
1	0	1	0	0	1	0	1	|	165
1	0	1	0	0	1	1	0	|	166
1	0	1	0	0	1	1	1	|	167
1	0	1	0	1	0	0	0	|	168
1	0	1	0	1	0	0	1	|	169
1	0	1	0	1	0	1	0	|	170
1	0	1	0	1	0	1	1	|	171
1	0	1	0	1	1	0	0	|	172
1	0	1	0	1	1	0	1	|	173
1	0	1	0	1	1	1	0	|	174
1	0	1	0	1	1	1	1	|	175
1	0	1	1	0	0	0	0	|	176
1	0	1	1	0	0	0	1	|	177
1	0	1	1	0	0	1	0	|	178
1	0	1	1	0	0	1	1	|	179
1	0	1	1	0	1	0	0	|	180
1	0	1	1	0	1	0	1	|	181
1	0	1	1	0	1	1	0	|	182
1	0	1	1	0	1	1	1	|	183
1	0	1	1	1	0	0	0	|	184
1	0	1	1	1	0	0	1	|	185
1	0	1	1	1	0	1	0	|	186
1	0	1	1	1	0	1	1	|	187
1	0	1	1	1	1	0	0	|	188
1	0	1	1	1	1	0	1	|	189
1	0	1	1	1	1	1	0	|	190
1	0	1	1	1	1	1	1	|	191
1	1	0	0	0	0	0	0	|	192
1	1	0	0	0	0	0	1	|	193
1	1	0	0	0	0	1	0	|	194
1	1	0	0	0	0	1	1	|	195
1	1	0	0	0	1	0	0	|	196
1	1	0	0	0	1	0	1	|	197
1	1	0	0	0	1	1	0	|	198
1	1	0	0	0	1	1	1	|	199
1	1	0	0	1	0	0	0	|	200
1	1	0	0	1	0	0	1	|	201
1	1	0	0	1	0	1	0	|	202
1	1	0	0	1	0	1	1	|	203
1	1	0	0	1	1	0	0	|	204
1	1	0	0	1	1	0	1	|	205
1	1	0	0	1	1	1	0	|	206
1	1	0	0	1	1	1	1	|	207
1	1	0	1	0	0	0	0	|	208
1	1	0	1	0	0	0	1	|	209
1	1	0	1	0	0	1	0	|	210
1	1	0	1	0	0	1	1	|	211
1	1	0	1	0	1	0	0	|	212
1	1	0	1	0	1	0	1	|	213
1	1	0	1	0	1	1	0	|	214
1	1	0	1	0	1	1	1	|	215
1	1	0	1	1	0	0	0	|	216
1	1	0	1	1	0	0	1	|	217
1	1	0	1	1	0	1	0	|	218
1	1	0	1	1	0	1	1	|	219
1	1	0	1	1	1	0	0	|	220
1	1	0	1	1	1	0	1	|	221
1	1	0	1	1	1	1	0	|	222
1	1	0	1	1	1	1	1	|	223
1	1	1	0	0	0	0	0	|	224
1	1	1	0	0	0	0	1	|	225
1	1	1	0	0	0	1	0	|	226
1	1	1	0	0	0	1	1	|	227
1	1	1	0	0	1	0	0	|	228
1	1	1	0	0	1	0	1	|	229
1	1	1	0	0	1	1	0	|	230
1	1	1	0	0	1	1	1	|	231
1	1	1	0	1	0	0	0	|	232
1	1	1	0	1	0	0	1	|	233
1	1	1	0	1	0	1	0	|	234
1	1	1	0	1	0	1	1	|	235
1	1	1	0	1	1	0	0	|	236
1	1	1	0	1	1	0	1	|	237
1	1	1	0	1	1	1	0	|	238
1	1	1	0	1	1	1	1	|	239
1	1	1	1	0	0	0	0	|	240
1	1	1	1	0	0	0	1	|	241
1	1	1	1	0	0	1	0	|	242
1	1	1	1	0	0	1	1	|	243
1	1	1	1	0	1	0	0	|	244
1	1	1	1	0	1	0	1	|	245
1	1	1	1	0	1	1	0	|	246
1	1	1	1	0	1	1	1	|	247
1	1	1	1	1	0	0	0	|	248
1	1	1	1	1	0	0	1	|	249
1	1	1	1	1	0	1	0	|	250
1	1	1	1	1	0	1	1	|	251
1	1	1	1	1	1	0	0	|	252
1	1	1	1	1	1	0	1	|	253
1	1	1	1	1	1	1	0	|	254
1	1	1	1	1	1	1	1	|	255