Principales respuestas
Cálculos buleanos.

Pregunta
-
Buen fin de año compañer@s del foro:
Usando la consola con .Net 4.8 y Visual Studio Community 2022.
Quiero saber si es posible usar sumas y multiplicaciones tipo buleanos, por ejemplo, en este ejemplo de abajo que es un OR
La compuerta lógica O, más conocida por su nombre en inglés OR (<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mstyle displaystyle="true" scriptlevel="0"><mstyle displaystyle="false" scriptlevel="1"><mi>O</mi> <mi>R</mi> <mo>≡</mo> <mi>O</mi> <mo>≡</mo> <mo>∨</mo> </mstyle> </mstyle> </mrow> </semantics> </math>
), realiza la operación de suma lógica.
La ecuación característica que describe el comportamiento de la compuerta OR es:
<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mstyle displaystyle="true" scriptlevel="0"><mi>F</mi> <mo>=</mo> <mi>A</mi> <mo>+</mo> <mi>B</mi> <mspace width="thinmathspace"></mspace></mstyle> </mrow> </semantics> </math>
Su tabla de verdad es la siguiente:
Tabla de verdad compuerta OR Entrada <math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mstyle displaystyle="true" scriptlevel="0"><mi>A</mi> </mstyle> </mrow> </semantics> </math> Entrada <math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mstyle displaystyle="true" scriptlevel="0"><mi>B</mi> </mstyle> </mrow> </semantics> </math> Salida <math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mstyle displaystyle="true" scriptlevel="0"><mi>A</mi> <mo>∨</mo> <mi>B</mi> </mstyle> </mrow> </semantics> </math> <center>0</center> <center>0</center> <center>0</center> <center>0</center> <center>1</center> <center>1</center> <center>1</center> <center>0</center> <center>1</center> <center>1</center> <center>1</center> <center>1</center> Podemos definir la compuerta OR como aquella que proporciona a su salida un 1 lógico si al menos una de sus entradas está a 1.
El código que he hecho hasta ahora es este.
using System; namespace Aritmetica_Booleana_Consola_01 { internal class Program { static void Main(string[] args) { #region Configuración ventana. // Título de la ventana. Console.Title = "Cálculos buleanos"; // Tamaño de la ventana, x, y. Console.SetWindowSize(70, 25); // Color de fondo. Console.BackgroundColor = ConsoleColor.Gray; // Color de las letras. Console.ForegroundColor = ConsoleColor.Black; // Limpiar pantalla y dejarlo todo gris. Console.Clear(); // Visible el cursor. Console.CursorVisible = true; #endregion // Variables. bool A = true; bool B = true; bool resultado = false; Console.WriteLine("*** Cálculos booleanos ***"); Console.WriteLine("Puerta OR: \n"); resultado = A + B; Console.WriteLine("A + B = ", resultado); // Pulse cualquier tecla para salir. Console.ReadKey(); } } }
Fuente de más puertas.
https://es.wikipedia.org/wiki/Puerta_l%C3%B3gica
A pasarlo bien lo que queda del año. ;)
http://electronica-pic.blogspot.com
Respuestas
-
No, así no funcionará bien. El problema lo tienes en esta línea:
resultado = A + B;
El operador + es una suma numérica. El compilador espera encontrar operandos numéricos, no booleanos, y devuelve un resultado numérico, por lo que no es adecuado para almacenarlo en la variable "resultado" que es booleana.
La solución es usar el operador booleano adecuado, que en C# se escribe con una barra vertical, "|".
resultado = A | B;
- Editado Alberto PoblacionMVP, Moderator viernes, 30 de diciembre de 2022 15:39
- Marcado como respuesta Metaconta viernes, 30 de diciembre de 2022 19:06
Todas las respuestas
-
No, así no funcionará bien. El problema lo tienes en esta línea:
resultado = A + B;
El operador + es una suma numérica. El compilador espera encontrar operandos numéricos, no booleanos, y devuelve un resultado numérico, por lo que no es adecuado para almacenarlo en la variable "resultado" que es booleana.
La solución es usar el operador booleano adecuado, que en C# se escribe con una barra vertical, "|".
resultado = A | B;
- Editado Alberto PoblacionMVP, Moderator viernes, 30 de diciembre de 2022 15:39
- Marcado como respuesta Metaconta viernes, 30 de diciembre de 2022 19:06
-
Gracias campeón.
Aquí lo explica con todos los operadores de puestas lógicas.
using System; namespace Aritmetica_Booleana_Consola_01 { internal class Program { static void Main(string[] args) { // Variables. bool A = false; bool B = true; bool resultadoOR; bool resultadoAND; Console.WriteLine("*** Cálculos booleanos ***"); Console.WriteLine("Puerta OR: \n"); resultadoOR = A | B; // A + B. Console.WriteLine("A + B = {0}", resultadoOR); resultadoAND = A & B; Console.WriteLine("Puerta AND: \n"); Console.WriteLine("A * B = {0}", resultadoAND); // Pulse cualquier tecla para salir. Console.ReadKey(); } }
Ahora si fucniona.
http://electronica-pic.blogspot.com
-
Hola Metaconta
Gracias por levantar tu consulta en los foros de MSDN. Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.
Siempre es un placer atender tus consultas!
Benjamin G.
--------------------------------------------------------------------------------
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.