Verdadero y Falso para la lógica && y || tabla logica

5 minutos de lectura

avatar de usuario
Ali

Tabla verdadero/falso para lenguaje C

He oído hablar de una tabla true false para C Language for and && or || es una especie de matemática para la que dicen si verdadero+verdadero=verdadero y falso+verdadero=falso

Estoy un poco confundido con esto y traté de investigar pero no pude encontrar nada de la tabla.

Solo deseo tener esta tabla para mis notas ya que haré más en lenguaje C

si alguien pudiera llevarme al sitio o recursos donde explican más sobre esto


He editado mi pregunta original para convertirla en una nota para mi propio estudio. Gracias @thiton por las excelentes referencias y el resto por una respuesta/recursos increíbles.

AND lógico (&&)

false && false: false

false && true: false

true && false: false

true && true: true

O lógico (||)

false || false: false

false || true: true

true || false: true

true || true: true

NO lógico (!)

!false: true

!true: false

  • ¿Realmente no puede encontrar la tabla de verdad para AND y OR para un solo valor booleano? Pruébalo al menos…

    – KerrekSB

    28 de septiembre de 2011 a las 13:20


  • “verdadero” y “falso” se introdujeron como macros con C99. verdadero se evalúa como 1 y falso como 0, por lo que verdadero+falso = 1+0 = 1 (== verdadero), no estoy seguro si verdadero+verdadero es válido. Como eso es 1+1, que no es un valor válido para _Bool. Pero no tenga el estándar a mano.

    – johannes

    28 de septiembre de 2011 a las 13:23

  • Aquí hay algo que es bueno saber, aunque tiene poco uso práctico en la programación: dado que falso se evalúa como 0 y verdadero como 1, puede (pero no debe) reemplazar && con * y || con +. De manera similar, AND es equivalente a la intersección en la teoría de conjuntos y OR es equivalente a la unión. Todo esto fue muy útil en el diseño de electrónica antigua, en los días previos a los microcontroladores, cuando implementaban funciones matemáticas con puertas. Los programadores aún pueden encontrar códigos heredados extraños en los que usan la multiplicación y la suma para realizar operaciones lógicas y viceversa.

    – Lundin

    28 de septiembre de 2011 a las 13:59

Probablemente te refieres a una tabla de verdad para los operadores booleanos, que muestra el resultado de las operaciones booleanas habituales (&&, ||). Esta tabla no es específica del idioma, pero se puede encontrar, por ejemplo aquí.

  • ¡Sí, esto es lo que se ha enseñado en mi clase y realmente estaba buscando este! 😀 Muchas gracias seguro voy a tener esta nota en mis notas

    – Alí

    28 de septiembre de 2011 a las 13:25

estas pensando en álgebra de Boole.

Los valores de verdad se pueden describir usando un álgebra de Boole. El artículo también contiene tablas para and y or. Esto debería ayudarlo a comenzar o confundirse aún más.

creo que pides álgebra de Boole que describe el resultado de varias operaciones realizadas en variables booleanas. Basta con mirar el artículo en Wikipedia.

Me gustaría agregar a las ya buenas respuestas:

Los símbolos ‘+’, ‘*’ y ‘-‘ a veces se usan como abreviaturas en algunos libros de texto antiguos para los operadores lógicos OR,∨ y AND,∧ y NOT,¬ en el álgebra de Bool. En C/C++, por supuesto, usamos “and”,”&&” y “or”,”||” y no”,”!”.

Cuidado: “verdadero + verdadero” se evalúa como 2 en C/C++ a través de la representación interna de verdadero y falso como 1 y 0, y la conversión implícita a int.

int main ()
{
  std::cout <<  "true - true = " << true - true << std::endl;
// This can be used as signum function:
// "(x > 0) - (x < 0)" evaluates to +1 or -1 for numbers.
  std::cout <<  "true - false = " << true - false << std::endl;
  std::cout <<  "false - true = " << false - true << std::endl;
  std::cout <<  "false - false = " << false - false << std::endl << std::endl;

  std::cout <<  "true + true = " << true + true << std::endl;
  std::cout <<  "true + false = " << true + false << std::endl;
  std::cout <<  "false + true = " << false + true << std::endl;
  std::cout <<  "false + false = " << false + false << std::endl << std::endl;

  std::cout <<  "true * true = " << true * true << std::endl;
  std::cout <<  "true * false = " << true * false << std::endl;
  std::cout <<  "false * true = " << false * true << std::endl;
  std::cout <<  "false * false = " << false * false << std::endl << std::endl;

  std::cout <<  "true / true = " << true / true << std::endl;
  //  std::cout <<  true / false << std::endl; ///-Wdiv-by-zero
  std::cout <<  "false / true = " << false / true << std::endl << std::endl;
  //  std::cout <<  false / false << std::endl << std::endl; ///-Wdiv-by-zero

  std::cout <<  "(true || true) = " << (true || true) << std::endl;
  std::cout <<  "(true || false) = " << (true || false) << std::endl;
  std::cout <<  "(false || true) = " << (false || true) << std::endl;
  std::cout <<  "(false || false) = " << (false || false) << std::endl << std::endl;

  std::cout <<  "(true && true) = " << (true && true) << std::endl;
  std::cout <<  "(true && false) = " << (true && false) << std::endl;
  std::cout <<  "(false && true) = " << (false && true) << std::endl;
  std::cout <<  "(false && false) = " << (false && false) << std::endl << std::endl;

}

rendimientos:

true - true = 0
true - false = 1
false - true = -1
false - false = 0

true + true = 2
true + false = 1
false + true = 1
false + false = 0

true * true = 1
true * false = 0
false * true = 0
false * false = 0

true / true = 1
false / true = 0

(true || true) = 1
(true || false) = 1
(false || true) = 1
(false || false) = 0

(true && true) = 1
(true && false) = 0
(false && true) = 0
(false && false) = 0

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad