Как обратиться к этому биту?
Речь идёт о реализации механизма "Mark and Sweep", для которой нужно обращаться к объекту и помечать его. Обращаться нужно именно к биту объекта(бит, указывающий, достижим ли этот объект из программы или нет), обратившись и изменив значение которого я смогу продолжить реализацию этого алгоритма. Так вот, как обратиться к этому биту?
Ответы (1 шт):
Автор решения: return
→ Ссылка
Всё просто:
x | (1 << n)– установка битаx & ~(1 << n)– обнуление битаx ^ (1 << n)– переключение бита
Тут x – исходное число (int, long, ...), а n – позиция бита.
Или же можно использовать enum:
enum ObjectAttributes
{
...
IsCollected = 0x1, // или 0x2, 0x4, 0x8, 0x10, 0x20, ...
...
}
И дальше используем так:
obj.Attributes |= ObjectAttributes.IsCollected– установка битаobj.Attributes &= ~ObjectAttributes.IsCollected– обнуление битаobj.Attributes ^= ObjectAttributes.IsCollected– переключение бита
Где obj – ваш объект.