?
package com.javarush.task.task39.task3903;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Неравноценный обмен
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter a number: ");
long number = Long.parseLong(reader.readLine());
System.out.println("Please enter the first index: ");
int i = Integer.parseInt(reader.readLine());
System.out.println("Please enter the second index: ");
int j = Integer.parseInt(reader.readLine());
System.out.println("The result of swapping bits is " + swapBits(number, i, j));
}
public static long swapBits(long number, int i, int j) {
if (number==1){
return number<<j;
}
i--;
j--;
long result = 0;
long fullnumber1 = 0;
long fullnumber2 = 0;
long index1 = (number >> i) & 1l;
long index2 = (number >> j) & 1l;
if (index1 ==0 && index2==0 || index1==1 && index2 ==1){
return number;
}
if (index1 == 0) {
fullnumber1=1l<<j;
}else{
fullnumber1 = index1 << j;
}
if (index2 == 0) {
fullnumber2=1l<<i;
}else {
fullnumber2 = index2 << i;
}
result = number ^ fullnumber1;
result = result ^ fullnumber2;
return result;
}
}