8
当我要使用位图存储多个标记时,我总是感到困惑。例如,如果一个对象有10个可能的属性(全部是或否),我使用一个unsigned int和基于属性的前10位(来自LSB)。现在如何设置和取消设置特定位以及如何检查位是否被设置?关于使用位图存储多个值的快速备忘录
如果我想取消设置的第5位,我用: BITAND(旗,2^5 - 1)
但我不能什么就用它来检查,如果第5位被设置或不清晰。
当我要使用位图存储多个标记时,我总是感到困惑。例如,如果一个对象有10个可能的属性(全部是或否),我使用一个unsigned int和基于属性的前10位(来自LSB)。现在如何设置和取消设置特定位以及如何检查位是否被设置?关于使用位图存储多个值的快速备忘录
如果我想取消设置的第5位,我用: BITAND(旗,2^5 - 1)
但我不能什么就用它来检查,如果第5位被设置或不清晰。
如果检查第位被设置在n:
(flags & (1 << n)) != 0
设置在n 第位:
flags |= (1 << n)
明确第n 第位:
flags &= ~(1 << n)
切换第n个位:
flags ^= (1 << n)
谢谢,这是我需要的东西,将它贴在我的办公桌:) – Arvind 2009-06-21 13:45:53