Я пытался реализовать инструмент манипулирования битами в Java.Я не хочу работать с классом Bitset
.
Я работаю с 64-битными значениями Long и реализовал следующие методы:
static final long toggle_bit(long number, int index) {
return (number ^= (1 << index));
}
static final long set_bit(long number, int index) {
return (number |= (1 << index));
}
static final long unset_bit(long number, int index) {
return (number &= ~(1 << index));
}
static final void print_bits(long number) {
String s = Long.toBinaryString(number);
String zeros = "0000000000000000000000000000000000000000000000000000000000000000"; //String of 64 zeros
s = zeros.substring(s.length()) + s;
System.out.println(s);
}
Я думаю, что лучший способ показатьмоя проблема - результат этого кода:
>>> print_bits(set_bit(0L, 30));
0000000000000000000000000000000001000000000000000000000000000000
>>> print_bits(set_bit(0L, 31));
1111111111111111111111111111111110000000000000000000000000000000
Я предполагаю, что достигаю отрицательных значений или чего-то в этом роде.Я был бы очень рад, если бы кто-нибудь показал мне очень эффективный способ манипулирования всеми 64 битами в длинном числе.
Привет, Финн