第一步明確如何將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);
}
}
}