A=9/64、B=-13/32、A+Bを求める:10進数加算(符号化方式)
1256 ワード
最初のステップは、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
方法:
文末は私が書いた変換コードで、正確性を検証することができます(真点数の小数部出力のみをサポートし、記号ビットは自分で判断することができます)
第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);
}
}
}