@hhzhhzhhz
2019-10-06T08:14:27.000000Z
字数 404
阅读 395
复习过程中,莫名发觉非运算这个一元运算符挺奇妙的,网上也没有详细解释于是~~~
#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(正数的补码是自己本身)
就是这样于是~(取反这一神奇的操作就完成了)【跑】