首页 > 代码库 > 按位运算符探讨
按位运算符探讨
之前一直没搞懂这个怎么计算的,主要也因为之前没怎么用到过这个,但现在想把它搞懂,所以索性一次性搞懂为妙,以后就不用再纠结了哈。
按位运算符就是把数字看作二进制来进行计算的,并且再把计算出来的二进制给它转换成十进制,也就是最终的结果了。
比如:
7&9
这个是按位与,先不讨论与不与的,总之它现在会把7和9转换成二进制,接下来我们将7和9转换成2进制,这里我用python。
如果你看不懂这段代码没有关系,因为这里的重点不是讲python,而是按位运算符,这里我们可以看到7的二进制为111,而9的二进制为1001。明显可以看出7和9的二进制长度不一样,如果长度不一样的话,短的那个前面会自动补0。结果就成了这样:
7:0111
9:1001
前面说了所谓的按位运算符就是比较两个数的二进制,那么怎么比较呢,是这样的,如果是按位与那么就比较两个数是不是都为1如果是就是1否则为0,看下面。
比如第一个7:0 ,第一个9:1那么它们就为0,只要其中有一个是0那么它就是零,当然这是对于按位于来说的。
整体比较如下:
7:0 1 1 1
9:1 0 0 1
结果:0 0 0 1
那么结果二进制就成了0001了,那么二进制0001再转换成十进制就是1,自然7&9结果就是1。
我们可以用下面的工具来帮我们转换。
其他的东西都不要问我,我只说按位运算符,因为其他我啥也不懂,至于转换来转换去,我也是百度了一下的,但我的目的达到了,因为我不是来学进制转换的,有一句话说的很好,不忘初心,方得始终。这也是一种学习方式,以前我学习老爱纠结这些,所以一直就学不好,因为有些根本就不是你现在该考虑的,你要明确自己学这个干嘛。
那么按位或,按位非,按位取反,自然也是一个道理,不过是比较的时候换种花样罢了,再拿按位或来演示一下。
按位或
5|6
转换2进制:
5:101
6:110
只要有1就是1
结果:111 这是二进制 再转一下就是7.
ok了,这是一次很愉快的过程,目的达到了哈,按位运算可以告一段落了。
按位运算符探讨