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?