【WIP】珠玉のプログラミング
私のこの本を心の中でたまたまのプログラミングと読んでいる。かわいい ここでは演習問題について自分の理解を書き連ねていく、逐次アップデート予定
コラム1 問題2
bit列のsetについて
rubyで書くとこんな感じなると思われる
a = 0 #初期化 b = a | 1 << 2 # 3番目のフラグをonにする1 << 2 = 4(100) c = b | 1 << 3 # 4番目のフラグをonにする 1 << 3 = 8(1000) d = c | 1 << 4 # 5番目のフラグをonにする 1 << 4 = 16(10000) e = d | 1 << 5 # 6番目のフラグをonにする 1 << 5 = 32(100000) puts e.to_s(2) # => 111100 # 各配列要素は添字でのアクセスで見れる puts e[5] # 1 6番目はonにしたので1になってる # bit列aのi番目をonにする。 def set(a, i) a | 1 << i - 1 end puts set(a, 7).to_s(2) # => 1000000 puts set(a, 64).size # => 8 defaultだとIntegerは8bytes puts set(a, 10000000).size # => 1.25mb シフトしたら勝手に拡張されるっぽい
これでソートしたら速度って変わるんけ?