2016-02-19 4 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)); 

Ceci est le code pour la multiplication binaire. Il a été demandé à de nombreuses reprises mais j'ai encore la confusion suite à cette question:Comment amener la réponse de ce code de multiplication binaire en binaire?

  • Après l'opération de déplacement, le résultat binaire ne reste pas plus binaire. A la fin, la variable de produit n'est pas binaire. Comment ne pas laisser le décalage affecter le résultat final, de sorte que le produit est en binaire? (Dans cet exemple précis, la réponse est 2115700113 qui est évidemment pas un nombre binaire.

  • Qu'est-01 signifie en (multiplicateur & 01)?

Merci pour la réponse à l'avance.

+2

Veuillez formater votre code (indenter le corps de vos boucles et conditions) - actuellement c'est vraiment difficile à lire. –

+1

Le problème commence par 'Integer.parseInt (num1)'. Cela donne une valeur de 11100001, qui * n'est pas * l'entier que vous voulez analyser ... Fondamentalement, vous devez comprendre qu'un 'int' est juste un' int' ... il n'est pas "dans" un particulier base. Cela n'est pertinent que lors de la conversion en texte. –

+0

Que suggérez-vous que je devrais faire au lieu d'analyser? @JonSkeet – user5951764

Répondre

1
Essayez

Integer.parseInt("100101", 2); ce analysera l'entier comme un nombre binaire

0

ajouter ceci comme une dernière déclaration.

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

Pour voir la version binaire de votre produit.

Java imprime les nombres en utilisant des nombres de base décimaux, puisque human est le maître. En interne dans la mémoire, ou le registre CPU tout est binaire.