Project1

标题: 看不懂Ruby的符号 [打印本页]

作者: kvkv97    时间: 2019-8-28 16:59
标题: 看不懂Ruby的符号
  在MAP类中,
bit = (1 << (d / 2 - 1)) & 0x0f
符号<<和 &到底是什么意思?0x0f又是什么意思?
作者: VIPArcher    时间: 2019-8-28 17:47
本帖最后由 VIPArcher 于 2019-8-28 18:05 编辑

这里的 << 和 & 都是二进制的位运算
<< 表示左移
3 << 2 可以看成是
把3转换为二进制数字 0000 0011 然后全体向左移动2位 变成 0000 1100 转回十进制就是 12
这么说可能有点懵,没关系换成公式让你秒懂,换成公式来算的话就是(公式为: n << m = n * (2 ^ m))
3 << 2的值为3 * (2^2) = 12
& 表示 按位与
把数字转成2进制,每一位比较,都为1的位才是1,否则是0,这么说你可能有点懵,没关系换成例子让你秒懂
举个例子就是
42 & 233 即为
00101001 & 11100101
可以这样
00101010    # 42
11101001    # 233
-----------------
00101000    # 40

0x0f 是十六进制的记法
对应十进制15
对应二进制00001111

脚本里的bit = (1 << (d / 2 - 1)) & 0x0f 其实就是取朝向的位
当朝向为
2 的时候上式计算得到 0000 0001
4 的时候上式计算得到 0000 0010
6 的时候上式计算得到 0000 0100
8 的时候上式计算得到 0000 1000




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1