2017-02-07 67 views
0

我必須在這裏的方法。一個將十進制數轉換爲8位二進制。我需要添加另一個將兩個二進制數一起添加的方法。例如01000000(64)+ 00000010(2)= 01000010(66)。那麼對於第二個方法,例如34 + 56等於90,那麼二進制等價物就是01011010.所以我需要一個執行該方法的方法。因此,如果用戶被要求輸入兩位十進制數字,則需要兩位數字並添加它們。出把二進制(8位)的答案如何添加二進制數字

這是一個十進制數轉換爲二進制,我需要一些如何得到它添加兩個二進制數

public String toBinary(int number) 
{ 
    String binary = " "; 
    boolean isNeg = number < 0; 
    if(isNeg) 
    { 
     number += 1; 
    } 
    while (number > 0 || number < 0) { 
     int rem = number%2; 
     if(rem == -1) 
     { 
      rem = rem * -1; 
     } 
     binary = rem + binary; 
     number /= 2; 

    } 
    while(binary.length() <= 8) 
    { 
     binary = "0" + binary; 
    } 

    if(isNeg) 
    { 
     StringBuffer buff = new StringBuffer(""); 
     for(int i =0; i < 8; i++) 
     { 
      char store = binary.charAt(i); 
      if(store == '0') 
      { 
       buff.append("1"); 

      }else 
      { 
       buff.append("0"); 
      } 

     } 

     binary = buff.toString(); 
    }  

    return binary; 
} 

轉換二進制轉換爲十進制我需要把它固定到負二進制(燒焦)工作,然後可以添加兩個二進制數

public int toDecimal(int number) 
{ 
    int decimal = 0; 
    int p = 0; 
    while(true) 
    { 
     if(number ==0) 
     { 
      break; 
     }else if(number > 0) { 
      int temp = number%10; 
      decimal +=temp*Math.pow(2,p); 
      number = number/10; 
      p++; 
     } 



    } 
    return decimal; 

}}

+0

在二進制0 + 0 = 0; 0 + 1 = 1; 1 + 1 = 0攜帶1; – Sedrick

+0

一旦你有你的兩個二進制字符串。使用Integer.parse(yourString.Charat(index));增加理想指標。不要忘記在需要時處理攜帶的物品。從每個添加項構建一個結果字符串。 – Sedrick

回答

0

首先,遺憾地告訴你,但是......這兩種方法已經存在,但偉大的如果你試圖對其進行編碼

//The method to convert from int to Binary already exists : Integer.toBinaryString(int i) 
System.out.println(toBinary(16)+" <=> "+Integer.toBinaryString(16)); 
//The method to convert from Binary to int (with String) too : Integer.parseInt(String s,2) 
System.out.println(toDecimal(00010000)+" <=> "+Integer.parseInt(String.valueOf(10000),2)); 

對於「添加」方法只使用2種其他方法:

public String addBinary(int a, int b){ 
     return toBinary(toDecimal(a)+toDecimal(b)); 
} 

爲您toDecimal:切勿使用while(true)這是非常危險的,實例化變量之外循環(這裏是else),因爲你每次創建一個新的:使用內存

+1

我猜這是一項家庭作業,所以OP將無法使用Integer.toBinaryString和類似的東西。 –

+0

'addBinary'方法也是如此。您將無法使用Java添加運算符來添加多位數字,因爲這會破壞賦值的目的。 –

+0

是啊,我不能使用任何這些 – MoneyMonster