Операции над байтами в C # - PullRequest
2 голосов
/ 08 января 2011

Я пишу приложение для управления светодиодами на LPT.У меня все работает, кроме этого.Это одна маленькая функция.

У меня есть что-то вроде этого:

Я хочу построить функцию, которая будет принимать два аргумента и возвращать одно число: в реальном коде эти двоичные числа будут в шестнадцатеричном виде.Я положил их туда так, чтобы вам было легче их визуализировать.

Example1:

arg1 = 1100 1100
arg2 = 1001 0001
retu = 0100 1100

Example2:

arg1 = 1111 1111
arg2 = 0001 0010
retu = 1110 1101

Example3:

arg1 = 1111 0000
arg2 = 0010 0010
retu = 1101 0000

Я понятия не имею, как должна выглядеть эта функция.Я хочу, чтобы это было как можно быстрее.

Я буду вызывать эту функцию 200 раз в секунду.

1 Ответ

11 голосов
/ 08 января 2011

По существу, установленные биты во втором аргументе - это те, которые вы хотите удалить.Таким образом, вы можете просто и с отрицательным вторым аргументом:

byte Foo(byte a, byte b) {
  return (byte)(a & ~b);
}

Ваши примеры как минимум следуют этому.

Как Александр С. примечанияв комментарии к вопросу функция называется импликацией, т.е. A B .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...