今天看到python中讲到按位翻转~x=-(x+1),其原理应该是二进制的翻转,网上查到一段解释听清楚的。
简单的说例如1用32位二进制存储的结果是 00000000000000000000000000000001 这是二进制,不是十进制哦,那么求反,或者说按位求反,或者说按位翻转都一样,结果就是 11111111111111111111111111111110 1变0,0变1能理解吧? 那么-(x+1)是为什么呢,是这样假设x还是1,那么x+1就是 00000000000000000000000000000010 不要奇怪,这是二进制哦 那么取-呢,就是取负呢,一般计算机用补码,表示,补码的取负就是按位取反之后再加1,先取反结果就是 11111111111111111111111111111101 最后再加个1就是 11111111111111111111111111111110 是不是和1直接取反的结果一样?公式就是这样