package Algorithmus.BitweisesOperatoren;

public class NOT {
	
	public static void main(String[] args) {
		/*
		 * Bitweises NOT (~):
		 * - Funktion: Der ~ Operator invertiert alle Bits einer Ganzzahl (bitweises NOT).
		 * 
		 * - Beispiel: Für eine Ganzzahl invertiert ~ jedes Bit. Bei einer positiven Zahl
		 *   wird sie negativ (im Zweierkomplement), und bei einer negativen Zahl wird sie positiv.
		 * 
		 * - Hinweis: Bitweises NOT kann nur auf Ganzzahlen angewendet werden, nicht auf logische Werte (booleans).
		 */

		// Beispiel:
		int x = 5;   // Binär: 00000000 00000000 00000000 00000101
		int result = ~x;   // Binär: 11111111 11111111 11111111 11111010 (Das ist -6 im Zweierkomplement)

		System.out.println(result); // Ausgabe: -6


		/*
		 * Logisches NOT (!):
		 * - Funktion: Der ! Operator invertiert den logischen Wert eines Ausdrucks. 
		 *   Wenn der Operand true ist, wird er false, und umgekehrt.
		 * 
		 * - Hinweis: Logisches NOT wird nur auf boolesche Werte angewendet (true/false).
		 */

		// Beispiel:
		boolean y = true;
		// Logisches NOT invertiert y, also wird !y false
		boolean result2 = !y;

		System.out.println(result2); // Ausgabe: false

		// Praktischer Einsatz:
		int a = 5;

		// Die Bedingung a > 10 ist false, aber durch das logische NOT (!) wird sie true
		if (!(a > 10))
		    System.out.println("a ist nicht größer als 10");
	}
}
