Java дополнительные функции

Всем добрый день. Подскажите, как можно реализовать эту задачу? Вводится исходное число A и число x. Вывести число А, x-ый бит которого равен 1

import java.util.*;
public class Program1 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt(), i = in.nextInt();
        System.out.println(5 | 7);

    }

}

Возникает вопрос, как обращаться к элементу именно x-ой позиции без индекса, а просто с побитовыми операциями?


Ответы (2 шт):

Автор решения: Miron
Scanner sc = new Scanner(System.in);
int number = Integer.parseInt(sc.nextLine());
int numberOfRazr = Integer.parseInt(sc.nextLine());
if((number << numberOfRazr) % 2 == 0) {
    System.out.println((int) (number + Math.pow(2, numberOfRazr - 1)));
} else {
    System.out.println(number);
}

Тест:

10
3
14

Сначала узнаем, есть ли на этом разряде двоичного числа единицы. Потом, если нет, добавляем двоичное число 1(нули, число которых равно numberOfRazr)

→ Ссылка
Автор решения: timur
Scanner in = new Scanner(System.in);
int x = in.nextInt(), i = in.nextInt();
System.out.println(x | (1 << i));
x = 0b101
1 << i = 0b010
0b101 | 0b010 = 0b111
→ Ссылка