网上发现了个梗,就是如果如果你看到有人给你用手笔画一个六,你就知道要赶紧打 110 了,问为什么?
他说因为 6 的二进制是 110,加上你笔画一个六有点像打电话的姿势,所以是在暗示你打 110。
但更有意思的是有人在控制台里面执行了下面的命令
2^2 + 2^1 // 返回 7
告诉我答案是 7
但更有意思的是有人在控制台里面执行了下面的命令
2^2 // 返回 0
2^1 // 返回 3
看了一下输出结果,发现是 0 和 3,0 + 3 不应该是 3 吗?
然后我就去查了一下发现这个叫做按位异或,也就是 XOR
剩下的就是运算符优先的问题了,按位异或的优先级是最低的,所以 2^2 + 2^1 实际上是 2^(2+2)^1 = 2^4^1 = 7
这里面考察的是计算机中符号的含义和运算符的优先级,如果你不知道这个,那么你就会认为 2^2 + 2^1 = 6 这个错误的说法
那上面的 6 转换成 110 的二进制计算到底应该怎么写呢?
2**2 + 2**1 // 返回 6