Случайная опечатка (& вместо %) привела в итоге к вот такому решению, когда выводятся все нужные четные числа.
Но почему?
Что это вообще обозначает?
Если вставить 3 вместо 1, то печатает каждое четвёртое число, но результат непонятно меняется при других цифрах.
Никак не пойму, как код прикреплять:
for (int i = 1; i <=100; i++) {
if ((i&1)==0){
System.out.println(i);
}
}
Вера
20 уровень
Объясните, что происходит.
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alex
5 апреля 2020, 17:27решение
"&" Это знак операции побитового "И". При выполнении этой операции сравниваются двоичные представления двух чисел. Побитовое "И" равняется единице, когда обе цифры на одинаковых позициях в двоичном числе равняются единице.
Код числа 1 в двоичной системе счисления это 1. Если оно сравнивается с числом, которое в двоичной системе счисления длиннее одной цифры (например число 1010), то в начале к нему прибавляются нули, которые ничего не значат. Поэтому при сравнении длины чисел одинаковы. (в данном примере будут сравниваться 1010 и 0001 и их результат будет 0000 или ноль если перевести в десятичную систему счисления).
Другой пример - если сравнивать 1011 и 0001, то результат будет 0001.
Если операция побитового "И" осталась непонятна, то поищите информацию о ней.
Затем взгляните на эту таблицу и попробуйте просчитать ход вашей программы.
![]()

+2