Я читаю код, где предполагается реализовать бит вектор, используя массив byte
.
Идея состоит в том, что битвектор имеет бит, если число находится в соответствующей позиции.
E.g. если номер 10 присутствует, бит 10 должен быть установлен и т. д. Это классическая концепция, и я получаю ее, но я не уверен в реальной реализации.Бит вектор построить на байт-массив - понимание бит манипуляции
Часть я не получаю:
bitvector [num/8] |= 1 << (num % 8);
Где num
это число, чтобы установить.
Если num равно 10, тогда должен использоваться второй байт (num/8
ok), но 1 << (num % 8)
не устанавливает второй бит второго байта, как должен. Имеет ли это?
Почему вы не печатаете '1 << (num% 8)' и узнаете? –
@OliCharlesworth: Теперь я чувствую себя идиотом. Я слишком потреблял, думая, что это неправильно, чтобы попробовать это – Cratylus