Подтвердить что ты не робот

Лучшие способы найти, являются ли обе переменные истинными или оба являются ложными

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

Теперь мне нужно установить другую переменную, которая будет true или false. это будет истинное значение, когда обе переменные истинны или оба являются ложными. Это будет ложное значение одного, это true, а другое - false.

в настоящее время я позабочусь об этом, используя оператор if

if ( v1 == true && v2 == true )
 result = true;
else if ( v1==false && v2 == false )
 result = true;
else if ( v1 == true && v2 == false )
 result = false;
else if ( v1==false && v2 == true )
 result = false;

Существует ли лучший способ сделать это?

4b9b3361

Ответ 1

Возможно, мне не хватает чего-то очень фундаментального, но я дам ему ход:

result = ( v1 == v2 );

Ответ 2

Вы можете использовать логический оператор XOR и логический оператор NOT как:

result = !(v1^v2);

Ответ 3

Такая проблема, учитывая таблицу истинности, сводит к минимуму логику, требуемую для воспроизведения значений истинности, часто красиво обрабатывается, Карты Карно

Ваша таблица истинности выглядит следующим образом:

 v1 v2  f(v1, v2)
  t  t     t
  t  f     f
  f  t     f
  f  f     t

И на самом деле, как отметили другие, учитывая эту таблицу истинности, базовое знакомство с логикой должно сразу дать функцию! xor

Однако, если вы берете таблицу истинности и рисуете ее как карту Карно, она выглядит так:

        v2
       f   t 
     ---------
 v  f| t | f |
 1  t| f | t |
     ---------

И функция выглядит так:! v1! v2 || v1v2, который, если вы посмотрите на 2 переменные примеры карты karnaugh, можно увидеть, чтобы упростить! xor

По общему признанию, 2 переменные карты karnaugh, вероятно, лучше всего обрабатываются обычными логическими операциями, хорошо знакомы и запоминаются. Но при расширении за пределами 2 переменных карты Карно очень освещают - вы должны изучить их.

Ответ 4

Используйте оператор XOR (^):

boolean result = !(v1 ^ v2)

Ответ 5

Простым способом является то, что если две переменные равны, то он должен быть истинным, а если любой из них является ложным, то он является ложным. проверьте это.

if(v1 == v2)
    return true;
else 
    return false;

Ответ 6

if(v1 == v2) 
return true; 
else 
return false;

Ответ 7

Почему бы просто не сравнить эти два?

if(v1 == v2) result = true;