In cima alla mia testa, non riesco a pensare a una singola lingua che ho usato che aveva un esclusivo o operatore logico, ma tutti hanno operatori logici e bit a bit and
e or
.Perché un sacco di lingue mancano di un operatore XOR logico?
Guardandosi intorno, l'unica ragione per cui riuscivo a trovare era quella esclusiva o non può essere cortocircuitata, quindi una versione logica sarebbe inutile, cosa che davvero non riesco a vedere. La ragione per cui è venuto alla mia attenzione che la maggior parte delle lingue manca è che ne avevo bisogno (stavo usando Ruby, quindi ho scritto un metodo per convertire un intero in un booleano, e quindi usare XOR bit a bit, che sui booleani si comporta come XOR logico) .
Anche l'uso di XOR bit a bit non funziona, perché darà un risultato diverso.
0b0001^0b1000 = 0b1001 (True)
0b0001 XOR 0b1000 = False
// Where^is bitwise exclusive or and XOR is logical exclusive or
// Using != (not equal to) also doesn't work
0b0001 != 0b1000 = True
Quindi perché la maggior parte delle lingue non include un operatore o un operatore logico?
Edit: ho aggiunto un esempio di come !=
, inoltre, non faccio quello che voglio, che quasi fa, ma cade nella stessa problema che l'uso di bit per bit esclusivo o lo fa, funziona solo se si sa che si stanno lavorando con zero o uno, e non con qualsiasi altro numero.
E da notare, questo presuppone che il linguaggio usi zero come falso e non nullo come vero.
Nel tuo secondo esempio, assume un linguaggio che utilizza non zero per vero. – caskey
Puoi dare un esempio di come il tuo XOR logico differisce da quello non uguale? –
Il * reale * qui è "Perché stai cercando di utilizzare operatori logici su valori non booleani?" Questo è semanticamente invalido e una cattiva pratica di programmazione per cominciare. – RBarryYoung