У меня есть следующий код:
@Test
public void simpleTest() {
long x = 0;
x |= 3L;
System.out.println(showBits(x));
}
private String showBits(long x) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 64; i++) {
builder.append((x & (1 << i)) > 0 ? "1" : "0");
}
return builder.reverse().toString();
}
В результате я ожидал увидеть такую последовательность: 00...011, но на деле получилось:
0000000000000000000000000000001100000000000000000000000000000011
Я понимаю, что в int 32 бита, а в long 64. Мне непонятно, почему в long типе обновляются оператором или каждые 32 бита, а не только первые.
Если вывести через System.out.println(x), то будет 3. А почему тогда дублируется тройка в битовом представлении?
Кажется, что ошибка где-то в цикле при выполннении операции И.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости