Перевод в двоичную систему или операции с побитовыми сдвигами?
Получаю массив, к примеру {1, 3, 0, -57, 0, 0, 79, 11}
там где -57 это то какие двигателя включены.
если перевести -57 в двоичный код "0xC7 = 11000111" я могу узнать что включен сейчас 1, 2, 6, 7 и 8 двигатель
Вроде как то так, как мне в коде можно делать проверку, чтобы узнать что сейчас у меня включено
тоесть указать номер двигателя 5 смотреть 5 бит который сейчас = 0
и вывести на экран.
Что то есть чувство что это должно быть как-то типа так
-57 << 5
и ответ будет 0
Кто сможет показать как правильно написать такую задачу с числом -57, потому что к этой теме я еще не дошел, а язык только учу ?
Для начала вам нужно внятно сформулировать задачу, чтобы другие могли ее понять. Если вам нужно проверить, установлен ли n-ный бит в числе, это делается так: if (x & (1<<n)){что-то там}
Владимир Мартьянов Смотрите я получаю к примеру -57 заношу ее в переменную byte
после чего с переменой беру уже то число что там (к примеру тоже -57) byte OnOfEngine = -57;
после чего мне нужно побитово проверять каждый бит на 1
После чего я должен вывести: Двигатель 1 включен
двигатель 2 включен
******
Двигатель 8 включен
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