Comment faites-vous le fonctionnement des bits XOR si vous n'avez que disponible le et les opérations ou les opérations? p>
11 Réponses :
Meilleur conseil consiste à rechercher Xor dans les manuels de référence et aux sites Encyclopédie sur le net, puis écrivez le code ou le script qui fait la même manière que la description de la fonction intégrée XOR et utilisez vos propres valeurs de retour ou d'état. Nous ne pouvons pas vous dire comment faire ce type de bit se compare de la communauté logicielle. P>
Je suis sûr que la formule ci-dessous est correcte: p>
un xor b = pas ((a et b) ou non (A + B)) p>
Lisez la question à nouveau. Pas n'est pas disponible.
table de vérité pour et table de vérité pour ou p> table de vérité pour xor p> donc, XOR est comme ou, sauf que c'est faux si A et B sont tristes. p> SO, (A ou B) et (non (A et B) et (non (A et B)), ce qui est (A ou B) et (une NAND B) P>
A B OR AND NAND [(A OR B) AND (A NAND B)]
T T T T F F
T F T F T T
F T T F T T
F F F F T F
Je pense que nous savons tous ce que ces opérations font une façon dont leurs tables de vérité ressemblent. La question est que pouvez-vous combiner les deux premiers pour former la troisième, et si oui, comment?
Je commençais ma réponse dans le cas où c'était des devoirs. Être une direction plutôt qu'une réponse. Je ne pense pas que cela puisse être fait.
L'entrée de Wikipedia sur XOR passe en détail en détail. Probablement un bon premier endroit pour vérifier avant de se pencher une question. P>
Si vous avez déjà des morceaux, vous ne vous souciez pas de masqué, il me semble le moyen le plus simple de le faire (dans la mesure où écrire le code va de toute façon) utiliser simplement votre opérateur non égal. P>
Création de ma propre langue de script - Chrisscript - Vous avez juste besoin de quelque chose comme:
#!/bin/chrish bit XOR (bit A, bit B) { bit notA; bit notB; IF (A == 0) notA = 1 ELSE notA = 0; IF (B == 0) notB = 1 ELSE notB = 0; F = ((A && notB) || (notA && B)); RETURN F; }
Un environnement JavaScript très limité.
De plus, j'ai besoin de le faire INT par INT, pas un peu à peu, car je ne peux pas obtenir de bits individuels, faute d'opérateurs de bits changeants.
Définir "très limité" - avez-vous le moteur JavaScript actuel que vous utilisez (par exemple, Microsoft Jscript)? Cette partie de certaines choses exclusives est-elle, si oui, quel produit et version? Ce serait bien d'avoir autant d'informations sur votre environnement que possible.
Si vous avez des opérateurs arithmétiques tels que La raison pour laquelle cela fonctionne est que nous faisons une ajout complète, ce qui équivaut à XOR lorsque la somme de la position du bit d'Amy est <= 1, puis nous corrigeons pour le cas où un port est généré (1 + 1) en soustrayant Notez que Cela fonctionne même lorsque le débordement des termes intermédiaires, en supposant que nous avons des entiers «normalement comportés» (complément de 2, modulo 2 enveloppant pour débordement, etc.). P> P> + code> et
- code> en plus de Bitwise et (
& code>) et ou (
| < / Code>) Ensuite, vous pouvez faire le bitwise xor comme ceci:
2 * (A & B) code>. p>
in c: x ^ y = (x & ~ y) | (~ x & y) code> p>
"Les systèmes ({t, f} et) et ({t, f} ou) sont des monoïdes." p>
"Le système ({T, F}, XOR) est un groupe abélien" qui a la propriété d'invertibilité contrairement aux monoïdes. p>
donc, "et" et "ou" ne pas construire "XOR 'opération" p>
Source: https://fr.wikipedia.org/wiki/exclusive_or#relation_to_modern_algebrale a> p>
exemple de code (dans JavaScript): P> (un xor b) = ((a ou b) - (A et B) - (A et B)) CODE> ou, en d'autres termes, le jeu Union moins le jeu d'intersection.
var a = 5;
var b = 12;
var xor = (a | b) - (a & b); // result: 9
dans Python
...:def xor(a,b): ...: c = (not a) and b ...: d = (not b) and a ...: e = not c ...: f = not d ...: g = e and f ...: h = not g ...: return h
PrintF('%-10s XOR',[inttobinbyte((10 OR 12)-(12 AND 10))]) 00000110 XOR
Je suis à peu près sûr que vous n'avez pas besoin aussi bien.
@Oded Nope, je veux juste savoir. Je programmment dans un environnement de script qui n'a qu'à seulement et ou, mais ni non ni xor, et j'ai besoin de Xor. Vous êtes sûr que les gars de Stackoverflow sont primés à juger quelque chose comme devoirs. De plus, je ne comprends pas ce lien, je l'avais déjà examiné avant de poster la question.
Je suis à peu près sûr que vous avez besoin de ne pas créer de xor = (a &&! B) || (! A && B) est le moyen le plus simple de le mettre
Vous n'avez pas besoin de sinon ce n'est pas possible. Si cela n'a pas (quel environnement de script est-ce que ne I> n'a pas I> n'est pas une omission assez fondamentale) - vous devriez simplement être capable d'utiliser une logique conditionnelle pour inverser le bit ...
si (x == 0) x = 1 code>, il devrait être simple.
Non pas? Sérieusement? Ce n'est pas drôle. (Oh ana @nixon: ni ne fonctionne aussi; mais ce n'est pas amusant avec Nand et ni)
Est-il permis d'utiliser des opérateurs arithmétiques, tels que
+ code> et
- code>? Si oui, voyez ma réponse ci-dessous ...