Section 11.8

// Guide to Java, Second Edition
// Copyright 2023 by J.T. Streib and T. Soma

import java.util.*;
class Bitp1 {
static Scanner scanner;
public static void main (String [] args){

int x,y=0,answer=0;
char op;

// input binary x
x = input8();
// output to verify input
output8(x);

// input operation code
scanner = new Scanner(System.in);
System.out.println();
System.out.print("Enter an operation ( |, ^ , & , ~ ,"
+ " L , R ): ");
op = scanner.next().charAt(0);

// check binary operators
if (op=='|' || op == '^' || op == '&') {
// input binary y
y = input8();
//ouptut to verify input
output8(y);
}

// check and perform operation
switch (op) {
case '|': answer = x | y;
break;
case '^': answer = x ^ y;
break;
case '&': answer = x & y;
break;
case 'L':
case 'l': answer = x << 1;
break;
case 'R':
case 'r': answer = x >>> 1;
break;
case '~': answer = ~x;
break;
default:
System.out.println("Invalid entry");
}
// Clear upper bits
answer = answer & 0b11111111;
// output results
System.out.println();
output8(answer);
System.out.println();
}

// input 8 binary bits
public static int input8 () {
int bNum;
scanner = new Scanner(System.in);
System.out.println();
System.out.print("Enter a binary number: ");
// input base 2
bNum = scanner.nextInt(2);
// clear upper bits
bNum = bNum & 0b11111111;
return bNum;
}

// output 8 binary characters
public static void output8 (int bNum) {
String bString,zString;
// convert to string
bString = Integer.toBinaryString(bNum);
// insert leading zeros and output
zString = String.format("%8s", bString).replace(' ','0');
System.out.println(" The binary number is: " + zString);
}
}