查看: 2726|回复: 8

[胡扯] 喔原来位运算可以这么玩

[复制链接]
梦石
0
星屑
1944
在线时间
404 小时
注册时间
2015-8-30
回帖
322
发表于 2018-9-1 11:57:54 | 显示全部楼层 |阅读模式

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

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

×
比如说咱有个Klass类,而Klass对象有一些bool型的属性,比如a,b,c,d之类的
我以前会这么写[pre lang="ruby"]class Klass
  attr_accessor :a, :b, :c, :d
  def initialize
    @a = false
    @b = false
    @c = false
    @d = false
  end
end[/pre]后来我发现了一种很神奇的写法……[pre lang="ruby"]class Klass
  FLAG_A = 0b0001
  FLAG_B = 0b0010
  FLAG_C = 0b0100
  FLAG_D = 0b1000
  def initialize
    @flags = 0b0000
  end
  def set_flag(flag, bool)
    bool ? @flags |= flag : @flags &= ~flag
  end
  def get_flag(flag)
    @flags & flag == flag
  end
end[/pre]这难道就是位运算的真谛?
小仙女一枚~
梦石
0
星屑
5037
在线时间
1780 小时
注册时间
2012-7-3
回帖
1749

开拓者

发表于 2018-9-1 12:16:58 | 显示全部楼层
当初做蓝牙板子,多任务就是用的这一招,拿当前task ID按位与找相关的方法

然后我是做上位机的于是这部分就一点儿没听
反正用的东西比较主流面向搜索引擎编程就行了,当时做quartus老师一点不讲啥也不知道什么也搜不出来,硬着头皮上结果就是做不出来,还不如直接抄呢
Project Ktr进行中:
   
------------------
→SRPG开发之六-天气与地形互动
→→围观
→→→去Lofter围观
------------------
离经叛道的扯淡者/伪独立游戏爱好者/Decade Studio(?)/造轮子真TM开心呀
回复

使用道具 举报

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2018-9-1 12:34:37 | 显示全部楼层
来人,把vector<bool>拉出来鞭尸
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

梦石
0
星屑
124
在线时间
15 小时
注册时间
2008-1-25
回帖
778
发表于 2018-9-1 18:02:12 | 显示全部楼层
既然用ruby了,就不要这么锱铢必较了,多用几个变量何必呢
论坛还活着真是太好了
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2018-9-3 09:48:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
回帖
181
发表于 2018-9-3 21:19:16 | 显示全部楼层
把整数当作flag用不是正常操作吗

点评

C写得多的话还是很常见的  发表于 2018-9-3 21:30
我只是由于一直学Ruby,没接触过这种用法  发表于 2018-9-3 21:21
←你看到一只经常潜水的萌新。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部