我正在使用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