Получение значения последних 2 битов без знака - PullRequest
1 голос
/ 02 февраля 2011

У меня есть неподписанный символ, и мне нужно проверить биты 1 и 2, чтобы найти статус.Каков наилучший способ определить последние 2 бита?

Я пытаюсь выполнить ИЛИ, но мои результаты неверны.Любая помощь будет оценена.Спасибо.

Пример:

10101000 = off
10101001 = on
10101010 = error
10101011 = n/a

if(data_byte_data[0] | 0xfe)
    //01
else if(data_byte_data[0] | 0xfd)
    //10;
else if(data_byte_data[0] | 0xfc)
    //11
else if(data_byte_data[0] | 0xff)
    //00

Ответы [ 4 ]

8 голосов
/ 02 февраля 2011

Я бы сделал что-то вроде:

v = data_byte_data[0] & 0x03;
switch (v)
{
case 0: ...
case 1: ...
case 2: ...
case 3: ...
}
3 голосов
/ 02 февраля 2011
switch(data_byte_dat[0] & 3) {
    case 0: puts("off");    break;
    case 1: puts("on");     break;
    case 2: puts(""error"); break;
    case 3: puts("N/A");
}
0 голосов
/ 02 февраля 2011
switch ( val & 3 ) {
    case 0: // 00
    case 1: // 01
    case 2: // 10
    case 3: // 11
}
0 голосов
/ 02 февраля 2011
switch(data_byte_data[0] & 0x0003)
{
  case 0: 
    // 00
    break;

  case 1:
    // 01
    break;

  case 2:
     // 10
     break;

  case 3:
     // 11
     break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...