jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017
-
17 juin 2010 à 19:23
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017
-
18 juin 2010 à 17:16
Bonsoir à tous,
Voilà, le titre donne une idée générale sur mon problème,
<?
$bin = 10010011;
?>
J 'ai déjà pu accéder au bit numéro 2 en effectuant un masque binaire 10, mais j'ai pas pu le modifier, c'est un 1 et je veux mettre un 0 à sa place sans que j'affecte des modifications aux 7 autres bits. 10010011 --> 100100[color =black]01/color
Si vous me proposez une autre méthode que le masque, assurez vous SVP qu'elle n'altère pas les 7 autres bits, j'en ia vraiment besoin, merci.
J'ai posté un message précédemment et j'ai été aidé, j'ai implémenté ce petit code :
$nbr_binaire = 10010001;
echo "Le nombre binaire :".$nbr_binaire."
";
$masque_binaire = 10;
echo "Le masque binaire :".$masque_binaire."
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 18 juin 2010 à 15:01
Je t'avoue que je n'apprécie pas la façon avec laquelle tu t'adresses à nous.. mais cela n'est que mon avis.
Et pour te faire un minimum comprendre que ça marche voici une fonction:
$b1 = 10010111;
function invertRow($n,$row){
return decbin(bindec($n)^(pow(2,$row-1)));
}
echo invertRow($b1,5); //On inverse le 5ème en partant de la droite..
//On obtient 10000111
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 18 juin 2010 à 08:52
Etant donné que tu travailles sur des binaires.. 'changer' veut dire passer 0 à 1 et 1 à 0.. Avec des opérateurs binaires && et || tu peux y arriver.
S.
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017 18 juin 2010 à 11:07
Si vous me proposez une autre méthode que le masque, assurez vous SVP qu'elle n'altère pas les 7 autres bits, j'en ia vraiment besoin, merci.
jeudi 17 juin 2010 à 19:23:42
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 18 juin 2010 à 11:21
Pourquoi veux-tu qu'on te propose une autre méthode alors qu'un masque en XOR pourrait convenir.. J'ai un peu l'impression que tu attends que ça tombe direct.non ??
S.
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017 18 juin 2010 à 12:39
Je n'ai pas dis que je veux pas une autre méthode, j'ai seulement dis SI vous me proposez...alors
Le XOR ca ne marche pas, SVP comprenez le problème avant de répondre.
Une chaine binaire de 8 bits par exemple : 10010111
je veux mettre un 0 à la place de celui qui est en gras sans modifier les autres bits.
J'ai appliquer les masque 1,2,3,4,5 en "ET" et en "OU" et en "XOR", et le résultat est bon mais il modifie le bit de poids le plus faible c'est ca le problème, et je ne veux qu'aucun bit ne change de valeur.
Alors si vous pouvez m'aider à trouver une solution, merci, si vous pensez que qqch marche alors expliquez comment, ne me dites pas que cela pourrait convenir ou autres choses merci.
J'ai bien expliqué le problème en haut, merci de le lire, et si vous ne l'avez pas compris vous pouvez l'exécuter et voir le résultat.
Enfin merci de vos réponses, si quelqu'un à une solution merci de la partager.