2017-06-28 6 views
0

J'exécute les instructions ci-dessous.calcul logique en utilisant &, ~ dans sybase

SELECT 10 & ~ 3. cela donne la sortie 8 SELECT 10 & ~ 5. cela donne la sortie 10 SELECT 10 & ~ 2. cela donne la sortie comme 8

Quelqu'un peut-il expliquer la logique derrière cela?

Répondre

1

ce sont des opérations au niveau du bit, et ~ est inverse.

3 is the same as 0011 in binary, and inverse of that is 1100 
2 is the same as 0010 in binary, and inverse of that is 1101 
5 is the same as 0101 in binary, and inverse of that is 1010 
10 is the same as 1010 in binary. 

10 & ~3 => 1010 & 1100 = 1000 => 8 
10 & ~5 => 1010 & 1010 = 1010 => 10 
10 & ~2 => 1010 & 1101 = 1000 => 8 

au niveau du bit est le bit pour bit

on peut penser en décimal aussi, mais il faut avoir votre état d'esprit en binaire et (séquence 1, 2, 4, 8, 16, 32, 64 , 128 ...). 10 consistent en "8 | 2" et 3 sont constitués de "1 | 2". L'inverse de 3 est tout sauf "1 | 2". La partie commune entre 10 et 3 est 2 donc vous aurez toutes les parties de 10 qui ne sont pas dans 3, nous donnant ainsi 8.

+0

Merci Lostfields. – Nolimits