Я пытаюсь создать BitSet
из 64 битов, где первые 20 бит генерируются случайным образом, пропуская LSB - LSB должен быть установлен на 1 или 0 в зависимости от того, является ли число 1 нечетным или четным ( вычисление битов четности).
Сейчас я могу создать 64 бита, где младший бит установлен в 1, поскольку число 1 с (0) четное.Чего я хочу добиться, так это установить случайным образом первые 20 бит (я думаю, MSB).
BitSet temp = new BitSet();
for (int i = 0; i < temp.size() / 8; i++) {
int msb = i * 8;
BitSet group = temp.get(msb, msb + 8);
temp.set(msb + 7, group.cardinality() % 2 == 0);
}
StringBuilder sb = new StringBuilder();
for( int i = 0; i < temp.length(); i++ )
{
sb.append( temp.get( i ) == true ? 1: 0 );
}
System.out.println("Bitset " + sb);
Это дает вывод:
Bitset 0000000100000001000000010000000100000001000000010000000100000001
Где я хочу, чтобы это было что-тонапример:
xxxxxxxp xxxxxxxp xxxxxx0p 0000000p 0000000p 0000000p 0000000p 0000000p
Где x
- это случайно установленный бит (0 или 1), а p
- это бит четности.