Я пытаюсь создать программу, которая будет печатать первое и последнее двоичное значение пользователя, заданного int, используя побитовые операторы. Например, если пользователь вводит 5, вывод должен быть «Двоичное значение равно 0101. MSB равно 0, LSB равно 1». Это то, что я имею до сих пор, и это похоже на работу, но я чувствую, что это неправильно. Кроме того, JAVA, кажется, не добавляет 0 перед меньшими числами. Например, выходные данные 5 - это не 0101, а 101, что меняет (по крайней мере для пользователя), чем являются MSB и LSB. Любая помощь будет принята с благодарностью, и я новичок в ней, поэтому, если бы вы могли сделать ее относительно простой, это было бы здорово.
public class LSBAndMSB {
public static void main (String [] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Hello! Please enter an integer.");
int in = sc.nextInt();
int first = 2;
int MSB = MSB(in, first);
int LSB = LSB(in, first);
String binary = binary(in);
System.out.print("You entered: " + in + ". The binary of this"
+ " number is: " + binary
+ ".\nThe MSB of the int " + in + " is: " + MSB +
".\nThe LSB of the int " + in + " is: " + LSB);
}
public static String binary(int out) {
return Integer.toBinaryString(out);
}
public static int LSB (int out, int pos) {
out = (out & (1 << (pos - 2)));
return out;
}
public static int MSB (int out, int pos) {
if (out > 0) {
out = (~ out & out);
return out;
} else {
out = (~ out & 0);
return out;
}
}
}