//*****************************************************************************
// Convert to binary
// Loop through a byte 0-255 and print in binary                           
//*****************************************************************************
public class printBinary2    
{
    public static void main(String[] args)
    {
        byte   num1  =  127;
        byte   num2  =  127;
               num2 += 1;
        int    num3  =  2000000000;
        int    num4  = -2000000000;
        int    num5  =  2147483647;
        int    num6  = -2147483648;
        char   chr1  = 'A';
        char   chr2  = 'a';

        int    nm1;
        int    nm2;
        String bin;

        System.out.println("\t\t        DECIMAL \t HEXADECIMAL \t\t\t\t  BINARY");
        bin = convert2Binary(num1);
        System.out.printf("byte:  %d \t %1$14d    \t\t %1$02x   \t %32s \n", num1, bin);          //print decimal, hex, binary
        bin = convert2Binary(num2);
        System.out.printf("byte: %d  \t %1$14d    \t\t %1$02x   \t %32s \n", num2, bin);          //print decimal, hex, binary
        bin = convert2Binary(num3);
        System.out.printf("int:  %11d   %1$11d      \t  %1$09x  \t %32s \n", num3, bin);          //print decimal, hex, binary
        bin = convert2Binary(num4);
        System.out.printf("int:  %11d   %1$11d      \t  %1$09x  \t %32s \n", num4, bin);          //print decimal, hex, binary
        bin = convert2Binary(num5);
        System.out.printf("int:  %11d   %1$11d      \t  %1$09x  \t %32s \n", num5, bin);          //print decimal, hex, binary
        bin = convert2Binary(num6);
        System.out.printf("int:  %11d   %1$11d      \t  %1$09x  \t %32s \n", num6, bin);          //print decimal, hex, binary
        nm1 = (int) chr1;
        bin = convert2Binary(chr1);
        System.out.printf("char:  %c \t %1$14d  \t       %1$04x \t %32s \n", nm1,  bin);          //print decimal, hex, binary
        bin = convert2Binary(chr2);
        nm2 = (int) chr2;
        System.out.printf("char:  %c \t %1$14d  \t       %1$04x \t %32s \n", nm2,  bin);          //print decimal, hex, binary


        System.out.println("\nLOOPING THRU A BYTE:");

        byte num = 0;
        for (int i=0; i<=255; i++)
        {
            bin = convert2Binary(num);
            System.out.printf("%4d \t %02x \t %8s \n", num, num, bin);      //print decimal, hex, binary
            num++;
        }
    }

    static String convert2Binary(byte x)                                    //method overloaded below
    {
        String binary;
        binary = String.format("%8s", Integer.toBinaryString(x));           //convert to binary
        binary = binary.replace(" ","0");                                   //replace all leading spaces with 0
        binary = binary.substring(binary.length() -8);                      //take the rightmost 8 positions
        return(binary);
    }
    static String convert2Binary(char x)                                    //method overloaded above
    {
        String binary;
        binary = String.format("%16s", Integer.toBinaryString(x));          //convert to binary
        binary = binary.replace(" ","0");                                   //replace all leading spaces with 0
        binary = binary.substring(binary.length() -16);                     //take the rightmost 16 positions
        return(binary);

 
    }
     static String convert2Binary(int x)                                     //method overloaded above
    {
        String binary;
        binary = String.format("%32s", Integer.toBinaryString(x));          //convert to binary
        binary = binary.replace(" ","0");                                   //replace all leading spaces with 0
        binary = binary.substring(binary.length() -32);                     //take the rightmost 32 positions
        return(binary);
    }
}