当初看到~操作符的时候,觉得这就是一个简单的取二进制取反的操作符,也就没有怎么用心去想,今天刚好有需求去找一个数的二进制取反,然后就用了这个操作符,发现并没有那么简单。
也就小小探究了一下这个操作符
在网上查了一下,很多博客上写着~是二进制按位取反的操作符,和我当初的想法是一模一样的
如:00001 变成 11110
首先代码:(在这里直接输出的二进制结果)
- 正数
- 正数部分输出结果:
负数部分:
- 负数
- 负数输出结果
这一看就不是取原数的反码或者补码,符号位都变了。
也不是直接二进制取反。
那这我能怎么办?只能像小学题目一样找规律了
找到的规律为:
~x 的值为 -(x+1)