第一步明确如何将A和B两个分数转换成二进制。
方法:
- 将分子乘2,再与分母比较
- if(小于分母) 写0
- if(大于分母) 写1,且将乘后的数字减去分母当成新分子
- 继续第一步,直到分子与分母相同。
文末是我写的转换代码,可以用来检验正确性(只支持真分数的小数部分输出,符号位可以自己判断的)
第二步求两个分数的二进制补码(A和B为例)
A=0.001001 B=-0.01101,则 A补=0.0010010,B补=1.1001100
第三步
[A+B]补=A补+B补=0.0010010+1.1001100=1.1011101
由补码求原码
补码为1.1011101
原码为-0.0100010
/*
* 输入输出格式:
* 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);
}
}
}