Most of the languages including C, C++, Java and Python provide the boolean type that can be either set to False or True.
Consider below programs that use Logical Not (or !) operator on boolean.
C++
#include <iostream>
using namespace std;
int main()
{
bool is_it_true = false ;
bool is_it_false = true ;
cout << is_it_true << endl;
cout << !is_it_true << endl;
cout << is_it_false << endl;
cout << !is_it_false << endl;
return 0;
}
|
Python
a = not True
b = not False
print a
print b
|
C#
using System;
class GFG
{
public static void Main ()
{
bool a = true , b = false ;
Console.WriteLine(!a);
Console.WriteLine(!b);
}
}
|
Javascript
<script>
var a = true , b = false ;
document.write(!a+ "<br/>" );
document.write(!b);
</script>
|
The outputs of above programs are as expected, but the outputs following programs may not be as expected if we have not used Bitwise Not (or ~) operator before.
Python
a = True
b = False
print ~a
print ~b
|
C/C++
// C/C++ program that uses Bitwise Not or ~ on boolean
#include <bits/stdc++.h>
using namespace std;
int main()
{
bool a = true, b = false;
cout << ~a << endl << ~b;
return 0;
}
Java
import java.io.*;
class GFG
{
public static void main (String[] args)
{
boolean a = true , b = false ;
System.out.println(~a);
System.out.println(~b);
}
}
|
Output:
6: error: bad operand type boolean for unary operator '~'
System.out.println(~a);
^
7: error: bad operand type boolean for unary operator '~'
System.out.println(~b);
^
2 errors
Conclusion:
“Logical not or !” is meant for boolean values and “bitwise not or ~” is for integers. Languages like C/C++ and python do auto promotion of boolean to integer type when an integer operator is applied. But Java doesn’t do it.
This article is contributed by Arpit Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above