Задать вопрос
Chvalov
@Chvalov

Перевод в двоичную систему или операции с побитовыми сдвигами?

Получаю массив, к примеру {1, 3, 0, -57, 0, 0, 79, 11}
там где -57 это то какие двигателя включены.
если перевести -57 в двоичный код "0xC7 = 11000111" я могу узнать что включен сейчас 1, 2, 6, 7 и 8 двигатель

Вроде как то так, как мне в коде можно делать проверку, чтобы узнать что сейчас у меня включено
тоесть указать номер двигателя 5 смотреть 5 бит который сейчас = 0
и вывести на экран.

Что то есть чувство что это должно быть как-то типа так
-57 << 5
и ответ будет 0

Кто сможет показать как правильно написать такую задачу с числом -57, потому что к этой теме я еще не дошел, а язык только учу ?
  • Вопрос задан
  • 326 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@vilgeforce
Раздолбай и программист
Для начала вам нужно внятно сформулировать задачу, чтобы другие могли ее понять. Если вам нужно проверить, установлен ли n-ный бит в числе, это делается так: if (x & (1<<n)){что-то там}
Ответ написан
Chvalov
@Chvalov Автор вопроса
public class Main {

    public static void main(String[] args) {
        byte OnOfEngine = -57;
        int NumberEngines;

        for (NumberEngines = 0; NumberEngines < 8; NumberEngines++) {
            if ((OnOfEngine & (1 << NumberEngines)) != 0)
                System.out.println("Dvigatel N " + NumberEngines + " vkluchen");
            }
        }
    }

Вывод:
Dvigatel N 0 vkluchen
Dvigatel N 1 vkluchen
Dvigatel N 2 vkluchen
Dvigatel N 6 vkluchen
Dvigatel N 7 vkluchen
Dvigatel N 8 vkluchen

Process finished with exit code 0
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы