我正在使用Ruby中包含設置列表的主位掩碼。我已將位掩碼轉換爲二進制,並需要將其與其他二進制值進行比較,以查看是否存在某些設置。比較二進制整數ruby
例如,我開始與位掩碼:
bitmask = 1540104
然後轉換爲使用爲二進制:
binary = bitmask.to_s(2) => 101111000000000001000
由於在該主二進制每個1表示一個單一的設置,我怎樣可以遍歷這導致看到每個1的位置在21位二進制的上下文中?像這樣:
100000000000000000000
001000000000000000000
000100000000000000000
000010000000000000000
000001000000000000000
000000000000000001000
任何幫助將不勝感激!
我不會理會它,只要使用哈希代替IMO。 <1kB的大小改進不值得代碼複雜化和IMO的麻煩。 –
21位可讓您擁有2^21(2097152)不同的設置配置。你的應用中真的有這麼多設置嗎?無論如何,如果你必須這樣做,你可以將它們與數字結合起來。如果一個位掩碼有一個特定的設置位,它將返回1,否則它將爲0. EG:'「100000000000000000000」.to_i(2)&bitmask#=> 1' while':010000000000000000000.to_i(2) &bitmask#=> 0'。 – Surya
我不確定你在問什麼。你想檢查一個特定的位是否被設置,或者你想要一些調試輸出? – Stefan