元ファンコードコードコードBU

パッケージの補数。

インポートjava.util.Scanner; 

パブリック クラス補体
{ 
    公共 静的 ボイドメイン(文字列[]引数)
    { 
        スキャナSC = 新しいスキャナ(System.in)。
        System.out.println( "A整数的请输入一个(-127)-128" );
        int型Originala;
        int型Originalb;
        一方、
        { 
            Originala = sc.nextInt()。
            もし(Originala> = -127 && Originala <= 128  
            {
                System.out.println( "Aは元のコードである:" + GetBinary(Originala));
                 IF(Originala> 0 
                { 
                    するSystem.out.println( "コードカウンタである:" + GetBinary(Originala)); 
                    システム.out.printlnは( "A補数は:" + GetBinary(Originala)); 
                } 
                { 
                    するSystem.out.println( "コードカウンタである:" + getReverse(GetBinary(Originala))); 
                    のSystem.out .println( "Aの補数である:" + getComplement(getReverse(GetBinary(Originala)))); 
                } 

                BREAK 
            } 
                {
            { 
                のSystem.out.println( "範囲外、再入力してください" ); 
            } 
        } 
        のSystem.out.printlnは( "入力(-127)-128整数A" );
         一方、真の
        { 
            Originalb = SC .nextInt();
             IF(Originalb> = -127 && Originalb <= 128 
            { 
                するSystem.out.printlnは、( "Bは、元のコードである:" + GetBinary(Originalb));
                 IF(Originalb> 0 
                    のSystem.out。 println( "逆符号Bは:" +GetBinary(Originalb)); 
                    のSystem.out.println( "Bの補数である:" + GetBinary(Originalb)); 
                } 
                { 
                    するSystem.out.printlnは( "逆符号Bである:" + getReverse(GetBinary(Originalb ))); 
                    のSystem.out.printlnは、( "Bの補数である:" + getComplement(getReverse(GetBinary(Originalb)))); 
                } 

                BREAK ; 
            } そうでなければ
            { 
                するSystem.out.println(「範囲外、再入力してください" ); 
            } 
        }
        文字列CA getComplement(getReverse(GetBinary(Originala)))。 =
        文字列CB = getComplement(getReverse(getBinary(Originalb)))。
       INT [] complementa = 新しい int型 [8 ]。
       INT [] complementb = 新しい int型 [8 ]。
       以下のためにint型、iは8 <; I = 0 iは++ ){ 
           complementa [I] = Integer.parseInt(ca.charAt(I)+ "" )。
           complementb [I] = Integer.parseInt(cb.charAt(I)+ "" )。
       } 
       のSystem.out.println( "按位与的结果:" )。
       System.out.println(getBinary(OriginalaOriginalb)); 
       System.out.println( "按位异或的结果:" ); 
       System.out.println(getBinary(Originala ^ Originalb)); 

    } 
    
    
    パブリック 静的文字列getBinary(int型K)
    { 
        文字列str = "" ;
        もし(K == 0 リターン "00000000" 
        { 
            int型フラグ= K> 0?1:0 
            K = K> 0?K:( - K)。
            一方、(K!= 0 
            { 
                STR= K%2 +STR; 
                K = K / 2 
            } 
            INT =でInteger.parseInt(STR)。
            もし(フラグ== 1 
            { 
                STR = String.Formatの( "%08D" 、IN)。
            } 
            { 
                STR = "1" + String.Formatの( "%07D" 、IN)。
            } 

            戻りSTR。
        } 
    } 

    パブリック 静的文字列getReverse(文字列str)
    { 
        文字列STR2 = "" ;
        以下のためのint型I = 1; i)は(str.lengthを<; 私は++ 
        { 
            場合(str.charAt(I)== '1' 
            { 
                STR2 = STR2 + "0" 
            } そう であれば(str.charAt(I)== '0' 
            { 
                STR2 = STR2 + "1" 
            } 
        } 
        リターン "1" + STR2。
    } 

    パブリック 静的文字列getComplement(文字列str)
    { 
        場合( "11111111" .equals(STR))
             リターン "00000000" 
        { 
            のIntインデックス= 0 ; 
            文字列STR2 = "" ;
             int型フラグ= IN(Integer.parseInt(str.charAt(7)+。 "== 2 1")+ 1):0 ;? // 1ないことを示すバイナリ0を表します。キャリー
            IF(フラグ== 1で。
            { 
                ためINT I = str.length() - 1;私が> = 0; i-- 
                { 
                    IF(フラグに== 1)// 必要が運ぶために、次に{ 
                    { 

                        IF(整数。 parseInt(str.charAt(I)+ "")+ 1 == 2 
                        { 
                            STR2 = "0" + STR2。
                            フラグ = 1 
                        } そう であれば(Integer.parseInt(str.charAt(I)+ "")+ 1 == 1 
                        { 
                            STR2 = "1" + STR2。
                            インデックス = I;
                            破ります; 
                        } 
                    } 

                } 
                STR2 = str.substring(0、インデックス)+ STR2。

            } 
            { 
                STR2 = str.substring(0,7)+ "1" 
            }

            戻りSTR2。
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/yanwenhui/p/11546277.html