05-4 位运算符-取反
取反的运算符的是:~
,会按照二进制的方式运算。其运算规则如下:
~1=-2;
~0=-1;
取反运算会按二进制位进行"取反"运算。
我们举例子试试
-
例1
#include
using namespace std; int main() { cout << ~1 << endl; cout << ~0 << endl; return 0; } 运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
-2 -1
-
例2
#include
#include "T2" using namespace std; int main() { int a = 100; int b = ~a; cout << a << endl; cout << b << endl; T2(a); T2(b); return 0; } 运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
100 -101 01100100 01100101
注意一下:因为这里是自己写的函数没考虑那么多,实际上
-101
的二进制是-1100101
。在这里,我们创建了一个
int
的数据类型,其中,a
的值为 100,b
是a
取反的产物。我们将
a
和b
的二进制表达方式打印出来,可以看到,取反,相当于是将输入值先转化为二进制,然后再加上负号。最后再将
b
从二进制转化为十进制,即-101
。为什么会产生
01100100
变成01100101
。- 因为数字
0
只有一个,-0
和+0
是一样的东西。事实上也没有-0
和+0
这样的说法,因为用小学一年级开始我们就知道,世界上有三种数:正数、负数和 0。
- 因为数字
总结:
- 取反运算会按二进制位进行"取反"运算。
- 取反,相当于是将输入值先转化为二进制,然后再加上负号。
:-)