Project1

标题: 喔原来位运算可以这么玩 [打印本页]

作者: 有丘直方    时间: 2018-9-1 11:57
标题: 喔原来位运算可以这么玩
比如说咱有个Klass类,而Klass对象有一些bool型的属性,比如a,b,c,d之类的
我以前会这么写
RUBY 代码复制
  1. class Klass
  2.   attr_accessor :a, :b, :c, :d
  3.   def initialize
  4.     @a = false
  5.     @b = false
  6.     @c = false
  7.     @d = false
  8.   end
  9. end
后来我发现了一种很神奇的写法……
RUBY 代码复制
  1. class Klass
  2.   FLAG_A = 0b0001
  3.   FLAG_B = 0b0010
  4.   FLAG_C = 0b0100
  5.   FLAG_D = 0b1000
  6.   def initialize
  7.     @flags = 0b0000
  8.   end
  9.   def set_flag(flag, bool)
  10.     bool ? @flags |= flag : @flags &= ~flag
  11.   end
  12.   def get_flag(flag)
  13.     @flags & flag == flag
  14.   end
  15. end
这难道就是位运算的真谛?
作者: defisym    时间: 2018-9-1 12:16
当初做蓝牙板子,多任务就是用的这一招,拿当前task ID按位与找相关的方法

然后我是做上位机的于是这部分就一点儿没听
反正用的东西比较主流面向搜索引擎编程就行了,当时做quartus老师一点不讲啥也不知道什么也搜不出来,硬着头皮上结果就是做不出来,还不如直接抄呢
作者: IamI    时间: 2018-9-1 12:34
来人,把vector<bool>拉出来鞭尸
作者: 空气    时间: 2018-9-1 18:02
既然用ruby了,就不要这么锱铢必较了,多用几个变量何必呢
作者: 晴兰    时间: 2018-9-3 09:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 不死鸟之翼    时间: 2018-9-3 21:19
把整数当作flag用不是正常操作吗




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