2011-07-08 5 views
2

Je veux vérifier une partie de ma logique par rapport à une fonction tierce que j'utilise et je ne suis pas sûr si j'ai bien compris la logique bit à bit. Quelqu'un peut-il me donner une plage de valeurs pour la variable 'intValue' dans chaque scénario qui fera que chaque conditionnelle retournera vrai? Merci!Aide pour les opérations au niveau du bit

 if ((intValue < 0 && ((intValue & 0xFFFFFF80) == 0xFFFFFF80)) || 
      (intValue & 0x0000007F) == intValue) { 

     } 
     else if ((intValue < 0 && ((intValue & 0xFFFF8000) == 0xFFFF8000)) || 
      (intValue & 0x00007FFF) == intValue) { 

     } 
     else if ((intValue < 0 && ((intValue & 0xFF800000) == 0xFF800000)) || 
      (intValue & 0x007FFFFF) == intValue) { 

     } 
     else { 

     } 
+3

Que dites-vous de ce que vous * pensez * qu'ils sont, et nous allons partir de là! –

+0

Afin de résumer ci-dessus deux commentaires: S'il vous plaît revenir en arrière et accepter les réponses des personnes fournies sur vos 5 questions précédentes. –

+5

apparemment je suis un idiot ... que ce soit ou je passe trop de temps sur reddit ... j'ai continué à essayer de 'upvote' les bonnes réponses et chaque fois ça me disait que je n'avais pas assez de mojo ou de tel non-sens, maintenant que vous le faites remarquer je vois la petite coche, le temps de revenir en arrière et de marquer ces correctes, thanx – snappymcsnap

Répondre

2
if (intValue == (SByte)intValue) { 
    // matches -128...127, i.e. values that fit in one byte 
} 
else if (intValue == (Int16)intValue) { 
    // matches -32768..32767, values that fit in two bytes 
} 
else if (intValue == ((intValue << 8) >> 8)) { 
    // matches -2**23..(2**23-1), values that fit in three bytes 
} 
else { 
    // matches -2**31..(2**31-1), values that need four bytes 
} 

S'il vous plaît noter que tous les tests intValue < 0 sont complètement redondants si la signature du type variable.

+0

Je pense que vous voulez dire "si le type de variable est _un_ signé"? – Lii

+1

@Lii: Non, je ne l'ai pas fait. Le test suivant regarde le bit de signe. –

+0

Et je suppose que si la variable n'est pas signée, les tests sont également redondants puisqu'ils ne peuvent pas contenir de valeurs négatives? – Lii

Questions connexes