2016-02-19 69 views
0
int product = 0; 
String num1 = "11100001"; 
String num2 = "10110001"; 
int multiplicand = Integer.parseInt(num1); 
int multiplier = Integer.parseInt(num2); 
for(int i=7; i>=0; i--) { 
    if((multiplier & 01) != 0) { 
    product=product+multiplicand; 
    } 
    multiplicand <<=1; 
    multiplier >>=1; 
} 
System.out.println((product)); 

這是二進制乘法的代碼。它已被問很多次,但我仍然對這個問題下面的困惑:如何將這個二進制乘法代碼的答案帶入二進制?

  • 在換檔操作之後,二進制結果不留二元了。最後,產品變量不是二進制的。我如何不讓變化影響最終結果,以便產品是二元的? (在這個具體的例子,答案是2115700113這顯然不是一個二進制數。

  • 是什麼01(乘數& 01)是什麼意思?提前

謝謝回答。

+2

請格式化您的代碼(縮進您的循環和條件的身體) - 目前它真的很難閱讀。 –

+1

問題始於'Integer.parseInt(num1)'。這給出了11100001的值,這*不是你想要解析的整數......基本上你需要明白一個'int'只是一個'int' ......它不是「在」任何特定的基礎。這隻在轉換爲文本時纔有意義。 –

+0

你建議我應該做什麼而不是解析? @JonSkeet – user5951764

回答

1

嘗試Integer.parseInt("100101", 2); 這將解析整數作爲二進制數

0

只需添加這是一個最後的陳述:

System.out.println(Integer.toBinaryString(product)); 

查看產品的二進制版本。

由於人是主人,Java使用小數基數打印出數字。內部在內存或CPU註冊表中的一切都是二進制的。