Pourquoi ne XORing deux grands nombres binaires donner une sortie décimale?
Je suis en train de XOR de deux grandes valeurs binaires. Cependant,
echo ${hashArray[1]}
echo ${hashArray[2]}
echo $((${hashArray[1]} ^ ${hashArray[2]}))
donne:
10100100000111101011100001101110000110000100001000000111001001100010110000010010111101100110111001111100010010000000010101110111
00001110110000010110101101011011100101101000011100011101001101101010000100110001001110101101111100010001111010100011010000000100
4018181242766406943
Pourquoi ne echo $((${hashArray[1]} ^ ${hashArray[2]}))
sortie d'un nombre décimal? Ne devrait-elle pas être une autre grande valeur binaire?
...de dépassement d'entier?
OriginalL'auteur gp_xps | 2012-09-28
Vous devez vous connecter pour publier un commentaire.
bash n'ont soutien pour les nombres binaires, cependant, vos numéros sont trop gros et sera tronqué. Soit faire comme mana suggère ou de scission de la chaîne ou de l'utilisation d'une bibliothèque qui peut gérer une précision arbitraire, par exemple en perl Math::BigInt vient à l'esprit:
xor.pl
Affecter les numéros de variables pour plus de commodité:
Exécuter avec:
De sortie:
OriginalL'auteur Thor
Faire "bit à bit", comme ça:
de sortie:
edit: Les entrées doivent avoir la même longueur!
OriginalL'auteur mana
Faire au niveau du bit avec bc, tout d'abord obtenir le fichier logique.bc :
Test xor()
Résultat:
OriginalL'auteur V. Michel