查看: 2539|回复: 2

[已经过期] 看不懂Ruby的符号

[复制链接]
梦石
0
星屑
4761
在线时间
285 小时
注册时间
2013-10-13
回帖
580
发表于 2019-8-28 16:59:18 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
  在MAP类中,
bit = (1 << (d / 2 - 1)) & 0x0f
符号<<和 &到底是什么意思?0x0f又是什么意思?

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2019-8-28 17:47:16 | 显示全部楼层
本帖最后由 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

点评

谢谢,明白点  发表于 2019-8-29 12:27
回复 1 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部