@hhzhhzhhz
2019-10-06T08:14:27.000000Z
字数 404
阅读 367
复习过程中,莫名发觉非运算这个一元运算符挺奇妙的,网上也没有详细解释于是~~~
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m;
while(1) {
cin>>n;
cout<<(~n)<<endl<<endl<<endl;
}
return 0;
}
结果:
发现每一个结果都是原数字
【大雾】
问:那这是为什么呢?
- 这种东西还是要回归到二进制;
对于n首先以二进制补码形式保存;
eg1: 2 -> 0 000 0010
eg2: -2 -> 1 111 1110
- 非运算即取反操作:对二进制补码连符号位一起取反后再次以补码形式保存
eg1: 0000 0010 -> 1111 1101 -> 1000 0011=-3
eg2: 1111 1110 -> 0000 0001 -> 0000 0001=1(正数的补码是自己本身)
就是这样于是~(取反这一神奇的操作就完成了)【跑】