I need to get 2 high bits from one byte in array. I have enum, that defines all values of those 2 bits:
...
enum elems{
elem1 = 0,
elem2 = 1,
elem3 = 2,
elem4 = 3
}
...
elems getElems(const QByteArray &data)
{
return (elems)(data[3] >> 6);
}
...
qDebug() << (data[3] >> 6); // return 0 or 1 or 2 or 3 (true way)
qDebug() << getElems(data); // return 0 or 1 or -1 or -2 (wrong way)
...
When data[3] == 0
it return 0
, when data[3] == 64
it return 1
, but when data[3] == 192
it return -1
and when data[3] == 128
it return -2
.
Why it's happens?