A=9/64、B=-13/32、A+Bを求める:10進数加算(符号化方式)


最初のステップは、AとBの2つのスコアをバイナリに変換する方法を明確にします.
方法:
  • 分子を2乗し、分母と比較する
  • if(分母未満)0
  • と書く
  • if(分母より大きい)は1を書き、乗数から分母を減算ことを新分子
  • とする.
  • は、分子が分母と同じになるまで第1のステップを継続する.

  • 文末は私が書いた変換コードで、正確性を検証することができます(真点数の小数部出力のみをサポートし、記号ビットは自分で判断することができます)
    第2歩は2つの点数のバイナリの補数を求めます(AとBは例です)
    A=0.001001 B=-0.01101、A補=0.0010010、B補=1.1001100
    ステップ3
    [A+B]補=A補+B補=0.0010010+1.1001100=1.1011101
    ほすうからげんごを求める
    補数は1.1001100
    /*
     *       :
     * 13 32
           M : 0 1 1 0 1
     */
    //Numerator    ,denominator    
    import java.util.Scanner;
    public class          {
    	static Scanner sc = new Scanner(System.in);
    	static int Numerator = sc.nextInt();
    	static int denominator = sc.nextInt();
    	public static void main(String[] args) {
    		System.out.print("    M : ");
    		f(Numerator,denominator);
    	}
    	private static void f(int numerator, int denominator) {
    			numerator = numerator*2;
    			if(numerator == denominator) {
    				System.out.print(1);
    				return;
    			}
    			if(numerator < denominator) {
    				System.out.print(0+" ");
    				f(numerator,denominator);
    			}
    			else if(numerator > denominator){
    				System.out.print(1+" ");
    				numerator = numerator - denominator;
    				f(numerator,denominator);
    			}
    	}
    }