2013-07-19 2 views
-1

Je veux utiliser xor pour mes doubles nombres dans matlab, mais bitxor ne fonctionne que pour les nombres entiers. Y at-il une fonction qui pourrait convertir double en int dans Matlab?Comment utiliser Bitxor pour les nombres doubles?

+1

Pouvez-vous expliquer * pourquoi * vous voulez appliquer bitxor à un double? Seulement, il pourrait y avoir un moyen plus facile d'atteindre votre objectif. –

+0

Dans mon programme, j'ai besoin d'utiliser un nombre double entre 0,1. Pour utiliser bit xor que dois-je faire? –

+0

@ saba2085 mais dites-vous que vous voulez trouver le xor de comme 0.2343 et 0.789787 par exemple? Parce que dans ce cas, comment définissez-vous xor? La conversion à un nombre entier arrondira ... – Dan

Répondre

0

Vous pouvez juste jeter un entier:

a = 1.003 

int8(a) 

ans = 

1 

Cela vous donne un entier signé 8 bits, vous pouvez également obtenir une autre taille-à-dire int16 ou bien non signé c.-à-uint8 en fonction de ce que vous voulez faire

+0

Pas comme ça.Je veux enregistrer mon numéro complètement.mon nombres est comme ceux-ci 0.5.0.789 ... et je veux garder ce formulaire. –

+0

Alors, qu'est-ce que 'xor' pour les doubles? Comment le définissez-vous? – Dan

+0

regarde dans mon programme Je change mon numéro [0,256] en nombre entre [0,1] et je veux utiliser bitxor pour mon numéro et un certain nombre aléatoire (entre [0,1]. Quand je dis changer double pour atteindre mon objectif est comme ça 0.789 ---> 789 –

1

Les fonctions que vous recherchez peuvent être: int8(number), int16(number), uint32(number) N'importe lequel d'entre eux convertira Double en nombre entier, mais vous devez choisir le meilleur pour le résultat que vous voulez atteindre. Souvenez-vous que vous ne pouvez pas passer de Double à Integer sans arrondir le nombre. Si je vous ai bien compris, vous pourriez créer une fonction qui supprimerait simplement la "virgule" du nombre double en multipliant votre valeur de départ par 2^n et en la convertissant en entier en utilisant l'une des fonctions mentionnées précédemment, effectuer ce que vous voulez et retourner la virgule à sa position d'origine en divisant le nombre par 2^n

Multiplier la valeur de départ par 2^n est un hack qui va diminuer l'erreur d'arrondi. La valeur parfaite pour n serait le nombre de chiffres après la virgule si ce nombre est relativement petit.

Veuillez également préciser pourquoi vous essayez de le faire? Cela ne semble pas être la solution optimale.

+1

Je pense qu'il pourrait être plus logique de multiplier par '2^n'? – Dan

+0

@Dan bien sûr, merci! –

+0

J'ai des automates cellulaires flous avec des nombres doubles. À chaque étape de la mise en œuvre, je veux utiliser des règles d'automates cellulaires et ensuite utiliser bitxor pour le résultat et un certain nombre aléatoire .Après ce résultat de l'utilisation du bit xor enregistrer aux automates cellulaires pour la prochaine étape. –

Questions connexes